哪里是Network.Socket.ByteString.Lazy的SENDTO?(Where is

2019-09-18 04:06发布

无论Network.Socket.ByteStringNetwork.Socket.ByteString.Lazysend功能。

Network.Socket.ByteStringsendTo功能,但Network.Socket.ByteString.Lazy没有。

我如何使用Network.Socket.ByteString的SENDTO与Lazy.ByteString Network.Socket.ByteString.Lazysend功能。 (即我怎么知道它在哪里发送数据包。)

谁能推荐上Haskell的字符串,BytesStrings一个很好的教程。 Lazy.ByteStrings等,因为我觉得他们很困惑(从Java / Python的背景的)。

Answer 1:

需要注意的是SENDTO是在发送的数据严格,所以没有真正的逻辑来传递一个懒惰的字节串。 这就是为什么该功能只适用于严格的字节串存在。



Answer 2:

答案是,使一个新功能:

import Data.ByteString as BS
import Data.ByteString.Lazy as LBS

lazyToStrictBS :: LBS.ByteString -> BS.ByteString
lazyToStrictBS x = BS.concat $ LBS.toChunks x

并用它来转换Lazy.ByteString成正常ByteString

这里是相反的,所以,我觉得,当我在将来再次谷歌这个问题。

import Data.ByteString as BS
import Data.ByteString.Lazy as LBS

strictToLazyBS :: BS.ByteString -> LBS.ByteString
strictToLazyBS x = LBS.fromChunks [x] 


文章来源: Where is Network.Socket.ByteString.Lazy's sendTo?