Я пишу сервер сокета, и я заметил, что если он получил пустой буфер сокета, это вызовет возникновение сокета. В приемном вызове, как я могу обнаружить и обработать пустой буфер и отправить ответ -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, когда другой конец все равно отключит сокет. Что * точно * вы подразумеваете под «если он получил пустой буфер сокета»? –