私はまだTcpソケットで立ち往生しています。私は現在サーバー/クライアントプロジェクトで作業中です クライアントから送信された完全なデータを受信しようとしていますが、すべてを手に入れよう。
いくつかの調査の後、私はone Send doesnt surely mean one receive
を知っているので、バッファサイズが送信されたデータのサイズに達するまで読書を続ける必要があります。C#ソケット完全なデータを受信
public void Connect()
{
try
{
_ThisSocket.Connect(this._HOST);
}catch {}
new Thread(() =>
{
while (_ThisSocket.Connected)
{
_ThisSocket.Receive(BufferSize, 0, 4, SocketFlags.None);
int Size = BitConverter.ToInt32(BufferSize, 0);
while (Size > 0)
{
if (Size < _ThisSocket.ReceiveBufferSize)
{
_Buffer = new byte[Size];
}
else
{
_Buffer = new byte[_ThisSocket.ReceiveBufferSize];
}
_ThisSocket.BeginReceive(_Buffer, 0, _Buffer.Length, SocketFlags.None, Receive, _Buffer.Length);
}
}
}
).Start();
}
private void Receive(IAsyncResult AR)
{
int Size = (int)AR.AsyncState;
Byte[] buff = new Byte[Size];
Array.Copy(_Buffer, buff, Size);
String Data = Encoding.Unicode.GetString(buff);
String Cmd = Crypter.Decrypt(Data);
Switch(Cmd);
}
私はまだC#プログラミングに新しいですが、私は何の言い訳もありません!
はこの質問を見てみましょう私は数年前に尋ねましたが、答えはいくつかの有用な洞察を与えます。 http://stackoverflow.com/questions/7126985/will-this-code-make-sure-i-read-all-i-want-from-a-socket – cost