1

と の両方Network.Socket.ByteStringに機能Network.Socket.ByteString.Lazyがありsendます。

Network.Socket.ByteStringsendTo機能はありますが、Network.Socket.ByteString.Lazyありません。

Lazy.ByteStringまたはの関数Network.Socket.ByteStringで の sendToを使用するにはどうすればよいですか。(つまり、パケットの送信先をどのように伝えるのですか。) Network.Socket.ByteString.Lazysend

Haskell の文字列、BytesStrings に関する優れたチュートリアルを推奨できる人はいますか。Lazy.ByteStrings など。非常に紛らわしいと思います (Java/Python のバックグラウンドから来ています)。

4

2 に答える 2

1

sendTo は送信されるデータが厳密であるため、遅延バイト文字列を渡す実際のロジックはないことに注意してください。そのため、関数は厳密なバイト文字列にのみ存在します。

于 2012-06-17T05:40:23.657 に答える
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 に答える