Я использую TcpClient. Иногда получайте ошибку:NetStream TcpClinet Не удается прочитать данные из транспортного соединения
Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
Я попытался разрешить информацию из вкладок stackoverflow. Я добавляю условие
netStream.CanRead
но без успеха. Что я делаю неправильно? Вот часть кода, спасибо.
try
{
if (netStream.CanRead)
{
do
{
int bytesRead = netStream.Read(bytes, 0, bytes.Length);
bytesReaded += bytesRead;
if (bytesRead > 0)
{
byte[] toList = new byte[bytesRead];
Array.Copy(bytes, toList, bytesRead);
listBytes.AddRange(toList);
}
}
while (netStream.DataAvailable);
if (listBytes.Count > 0)
ParseAllBytes();
}
else
{
Close();
}
}
catch (IOException ex)
{
Это будет трудно использовать wirehark, поэтому эта ошибка не является периодической. С этой проблемой после отсоединения клиент не может подключиться к TcpClient. Я должен перезапустить службу. У этой проблемы есть связь с ошибкой? – Musketyr
Возможно, вам понадобится воссоздать ваш сокет или TcpClient, если у вас неправильно установлено гнездо повторного использования. Мне никогда не приходилось работать. Я всегда создаю новый сокет. Я не уверен, имеет ли TcpClient ту же идею повторного использования, что и сокет. – uriDium
Обработка входящих данных для каждого клиента в новой теме в новом экземпляре TcpClient. После ошибки TcpClient и NetStream расположены правильно. – Musketyr