无论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
的send
功能。 (即我怎么知道它在哪里发送数据包。)
谁能推荐上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]