Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 在发送和haskell`字符串时使用哪种高级接口而不是网络`_String_Haskell_Networking - Fatal编程技术网

String 在发送和haskell`字符串时使用哪种高级接口而不是网络`

String 在发送和haskell`字符串时使用哪种高级接口而不是网络`,string,haskell,networking,String,Haskell,Networking,模块的第一行文档内容如下: 保留此模块是为了向后兼容。鼓励新用户改用Network.Socket 网络库具有允许以方便的方式发送和接收字符串的功能,例如: h <- connectTo "localhost" (PortNumber 9090) -- ... line <- hGetLine h 这是相当低的级别,需要对字符串进行编码/解码。所以我的问题是,如果我只想通过套接字发送和接收字符串(带有一些编码),那么如果网络不是一个选项,那么完成这项任务的备选方案是什么

模块的第一行文档内容如下:

保留此模块是为了向后兼容。鼓励新用户改用Network.Socket

网络
库具有允许以方便的方式发送和接收
字符串的功能,例如:

  h <- connectTo "localhost" (PortNumber 9090)
  -- ...
  line <- hGetLine h
这是相当低的级别,需要对
字符串进行编码/解码。所以我的问题是,如果我只想通过套接字发送和接收字符串(带有一些编码),那么如果
网络
不是一个选项,那么完成这项任务的备选方案是什么


编辑:虽然管道是管道是很好的选择,但我正在从事的项目大量使用了这些
网络
功能,因此,我最终开发了一个用于发送和接收
文本的
,使用了与
网络
库中类似的功能。

您不能使用
socketToHandle
将套接字转换为
句柄
并在其上使用
hGetLine
吗?我可能会使用流媒体库来处理解码和行处理分裂<例如,代码>管道
+
通过testring管道
+
管道文本
,或者使用
socketToHandle
的Conduit等价物可以解决部分问题,但这将使我暴露在我试图避免的[this bug]()。嗯,是的,那么,最好的选择可能是带有Data.conduct.Network或pipes Network的额外导管。前者的功能似乎更完整一些。
addrinfos <- getAddrInfo Nothing (Just "") (Just "9090")
let serveraddr = head addrinfos
sock <- socket (addrFamily serveraddr) Stream defaultProtocol
connect sock (addrAddress serveraddr)
-- ...
msg <- recv sock Size
-- What `Size` should be? The line above should be probably repeated until all the data is received.