私はソケットサーバーを作成しています。空のソケットバッファを受け取った場合、ソケット例外が発生することに気付きました。受信コールでは、空のバッファを検出して処理し、ソケットが閉じる前に-1レスポンスをクライアントに返すことはできますか?空のソケットバッファを処理する方法
コード:
try
{
byte[] byteBuffer = new Byte[1024];
int size = m_clientSocket.Receive(byteBuffer);
if (size > 0)
{
ParseReceiveBuffer(byteBuffer, size);
}
else
{
m_clientSocket.Send(BitConverter.GetBytes(-1));
}
}
catch (SocketException ex)
{
if (ex.SocketErrorCode == SocketError.WouldBlock ||
ex.SocketErrorCode == SocketError.IOPending ||
ex.SocketErrorCode == SocketError.NoBufferSpaceAvailable)
{
// socket buffer is probably empty, wait and try again
Thread.Sleep(1000);
}
// connection was unexpectively closed
}
あなたの意図がはっきりしません。とにかく相手側がソケットをシャットダウンしたときに 'Receive'が0を返すとしか思いません。あなたが「空のソケットバッファを受け取った場合」とは*正確に*何を意味しますか? –