Network.Socket.ByteString
和Network.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背景)。
答案 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在发送的数据中是严格的,因此没有真正的逻辑来传递一个惰性字节串。这就是为什么函数只存在于严格的字节串上。