Network.Socket.ByteString.Lazy的sendTo在哪里?

时间:2012-06-15 14:14:41

标签: string networking haskell bytestring

Network.Socket.ByteStringNetwork.Socket.ByteString.Lazy都有send个功能。

Network.Socket.ByteString有一个sendTo函数,但Network.Socket.ByteString.Lazy没有。

如何将Network.Socket.ByteString的sendTo与Lazy.ByteString Network.Socket.ByteString.Lazy的{​​{1}}函数一起使用。 (即如何告诉它在哪里发送数据包。)

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

2 个答案:

答案 0 :(得分: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] 

答案 1 :(得分:1)

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