首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Haskell sendFile函数

Haskell sendFile函数
EN

Stack Overflow用户
提问于 2013-12-02 20:21:28
回答 1查看 360关注 0票数 0

在哪里可以找到sendFile函数(Network.Socket.SendFile库)的一些实际示例。当我尝试通过官方手册完成所有工作时,我得到了一个错误:

代码语言:javascript
复制
Exception: {file path}: withFd: resource vanished (Broken pipe)

这是一些简单的函数用法示例吗?

以下是源代码:

代码语言:javascript
复制
withSocketsDo $ do                                                                                                                                              
                sock <- socket AF_INET Stream defaultProtocol                                                                                                           
                bindSocket sock (SockAddrInet 1212 0)
                sendFile sock "/some/path/to/file"
EN

回答 1

Stack Overflow用户

发布于 2013-12-03 01:56:29

这里有一些我需要用到的代码。

代码语言:javascript
复制
import Network.Socket.SendFile
import Network.Socket

main = withSocketsDo $ do
    sock <- socket AF_INET Stream defaultProtocol            
    addr <- inet_addr "127.0.0.1"
    connect sock (SockAddrInet 8080 addr)
    sendFile sock "some/path/to/file"

以下是正在发生的事情以及如何使其工作的说明-

  1. 您需要设置一个服务器来接受数据。您可以做的最简单的事情(仅用于测试目的)是使用netcat。在我的linux机器上,我输入以下命令启动了netcat

nc -l -p 8080

("-l“告诉它侦听连接,-p指定端口,这个端口可以是您有权绑定到的任何东西,只要它与上面的haskell程序中的端口匹配)

  1. The withSocketsDo只是为了兼容Windows才需要的,但在其他服务器上使用connect而不是bind是没有坏处的。
  2. 一旦你编译并运行了程序,你应该会在启动netcat的终端中看到文件的内容(然后程序就会停止)。如果在未启动netcat服务器的情况下运行haskell程序,将会出现错误。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20328238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档