Network.Socket.ByteString.Lazy's sendTo在哪里?



Network.Socket.ByteStringNetwork.Socket.ByteString.Lazy都有一个send函数。

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

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

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

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

答案是创建一个新函数:

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] 

最新更新