1

两者Network.Socket.ByteString都有Network.Socket.ByteString.Lazy一个send功能。

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

如何将Network.Socket.ByteString's sendTo 与 Lazy.ByteString Network.Socket.ByteString.Lazy'send函数一起使用。(即我如何告诉它将数据包发送到哪里。)

任何人都可以推荐一个关于 Haskell 字符串 BytesStrings 的好教程。Lazy.ByteStrings 等,因为我发现它们非常令人困惑(来自 Java/Python 背景)。

4

2 回答 2

1

答案是创建一个新功能:

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] 
于 2012-06-15T14:55:28.003 回答
1

请注意, sendTo 在发送的数据中是严格的,因此将惰性字节串传递给它没有真正的逻辑。这就是为什么该函数只存在于严格的字节串上。

于 2012-06-17T05:40:23.657 回答