Это связано с тем, что .Net использует небезопасные методы для методов отправки и получения. Вы должны обработать свой программный код.

я действительно странная ситуация в моем коде. Я разрабатываю клиент-серверное приложение c # chat. Когда я закрываю сервер, я хочу, чтобы клиент автоматически закрывался. Клиент читает из объекта TcpClient, используя StremReader. Клиент находится в цикле while, где он читает строку (StreamReader.ReadLine ()) и затем выполняет некоторые операции со строкой, которую он читает. Когда сервер закрывается, я также закрываю серверную часть соединения TCP. Итак, я ожидаю, что клиент увидит исключение SocketException, вызванное readline, перехватит его и завершится. Но исключение не попадает! Вот код цикла клиента:

 while (true)
 {
     try
     {
          ricev = read.ReadLine();
     }
     catch(SocketException exc)
     {
         //It never gets in here
     }
     chat.Invoke(showMessage, ricev);
 }

Когда я закрываю сервер, Visual Studio сообщает, что в System.dll было сгенерировано исключение «System.Net.Sockets.SocketException», но я не могу его перехватить. Почему это происходит? я также пытался поймать любое общее исключение с

catch
{
}

блок, но это тоже не работает.

Любая помощь будет оценена!

РЕДАКТИРОВАТЬ: после попытки еще несколько раз, я на самом деле обнаружил, что SocketException не поднимается вообще. Это так странно, как я сказал в комментарии, в противоположной ситуации, когда клиент закрывается перед сервером, возникает исключение, и я могу это сделать. Я действительно не знаю, что происходит ....

Ответы на вопрос(6)

Ваш ответ на вопрос