소켓 서버를 쓰고 있는데 빈 소켓 버퍼를받은 경우 socketexception이 발생합니다. 수신 호출에서 어떻게 빈 버퍼를 감지하고 처리하고 소켓이 닫히기 전에 -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을 리턴 할 것이라고 생각합니다. 정확히 "* 빈 소켓 버퍼를받은 경우"는 무엇을 의미합니까? –