2
ネットワークコードの一部を改善しようとしていますが、ここではSocket.Send
を使用する必要があります。Socket.Sendベストプラクティス
しかし、MSDNは、再試行を処理するのは開発者自身の責任であり、Socket.Sendメソッドはすべてのデータを単一の要求(バッファサイズに依存)で送信する必要はないため、次のループ:
try
{
int timeout = TimeSpan.FromSeconds(10).Milliseconds;
int waitTime = TimeSpan.FromMilliseconds(30).Milliseconds;
Socket socket = tcpClient.Client;
socket.SendTimeout = timeout ;
int offset = 0;
while (offset != data.Length)
{
if (socket.Poll(waitTime , SelectMode.SelectWrite))
{
offset += socket.Send(data, offset, data.Length - offset, SocketFlags.None);
}
}
}
catch (SocketException)
{
tcpClient.Close();
}
は、しかし、私はそれがゼロに基づいているとして、それはおそらくにつながる、オフセットに関する不確実だが、ここですべてのループ上の単一バイトが欠落したオフセット、または私が間違っていますか?
また、ここで気になるその他のベストプラクティスはありますか?
WCFはエレクトロニクスとうまく動作しません;-) –
ああ:)まあ、あなたのコードは正常に動作するはずです。私はオフセット変数をインクリメントすることで過去に似たようなことをしてきました:) – NibblyPig