Можно ли отменить метод Receive в классе Socket, который получает некоторые данные через TCP-соединение?
У меня есть несколько методов
public IStateObject Receive()
{
IStateObject state;
string message = ReceiveMessageFromClient();
if (message.Contains("Transfer-Encoding: chunked"))
{
state = new ChunckedState();
}
else
{
state = new ContentState();
}
state.SetHeaders(message);
state.SetBody(message.Substring(message.IndexOf("\r\n\r\n") + 4));
ThrowResponse(state);
while (state.EndResponse() == false)
{
if (client == null)
{
ThrowResponse(state);
return state;
}
message = ReceiveMessageFromClient();
state.SetBody(message);
ThrowResponse(state);
}
return state;
}
private string ReceiveMessageFromClient()
{
try
{
int BufferSize = 65536 * 2;
byte[] buffer = new byte[BufferSize];
int bytes = client.Receive(buffer, buffer.Length, 0);
return Encoding.UTF8.GetString(buffer, 0, bytes);
}
catch (SocketException exception)
{
return string.Empty;
}
}
Так что метод Receive всегда получает некоторые данные от клиента. И мне нужно закрыть соединение в какой-то момент. Но когда я просто делаю client.Close (); Я ловлю SockeException в методе ReceiveMessageFromClient. Как мне правильно закрыть соединение?