Я использую VS 2008 для реализации сервера, который получает соединение сокета от клиента. Я использовал образец кода MSDN для этого, и он действительно работает для меня в первый раз. . Моя информация от автора клиента заключается в том, что перед первым запросом он пытается квитироваться, а затем отправить свой первый запрос. Я действительно хорошо это понимаю. После этого я отправляю ответ клиенту, который также получает его. Но теперь моя проблема начинается: Клиент начинает отправлять мне запросы, но я ничего не получаю !!! Я не уверен в моей реализации, поскольку в примере MSDN есть только один запрос. Может ли кто-нибудь объяснить, в чем разница между получением первого запроса и второго? Должен ли я использовать Socket.Accept() для каждого запроса или после того, как у меня есть восстановленный сокет из функции Socket.Accept(), я просто использую Socket.Receive()?Сервер сокета не получает второй запрос
Мой код основан на образце MSDN здесь:
listener.Bind(localEndPoint);
listener.Listen(10);
// Start listening for connections.
Console.WriteLine("Waiting for a connection...");
// Program is suspended while waiting for an incoming connection.
Socket handler = listener.Accept();
data = null;
SocketError errorCode;
// An incoming connection needs to be processed.
while (true)
{
bytes =new byte[1024];
handler.ReceiveTimeout = 2000;
int bytesRec = handler.Receive(bytes,0,1024,0,out errorCode);
data +=Encoding.ASCII.GetString(bytes, 0, bytesRec);
Console.WriteLine("Text received : {0}", data);
string answer = "my answer to client";
// Echo the data back to the client.
byte[] msg = Encoding.ASCII.GetBytes(answer);
handler.Send(msg);
}
Мои результаты первый раз я получаю некоторые данные в bytesRec и отправить ответ клиенту. Тогда я больше ничего не получаю в bytesRec, но полученный прерван из-за ошибки времени.
Спасибо заранее,
Не могли бы вы форматировать свой код, чтобы он был читабельным? –