Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: обнаружитьотключение клиента TcpClient  (Прочитано 6834 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Serguntii
Помогающий

ru
Offline Offline

« : 06-03-2014 09:51 » 

Событие клиент отключился,обрыв связи, или еще какие то проблемы, подскажите пожалуйста как сделать?
Код:
TcpClient client = threadListener.AcceptTcpClient();  клиент подключился
NetworkStream ns = client.GetStream();
while(1)
{
       ns.read(da,0,ns.ReceiveBufferSize );
}

« Последнее редактирование: 06-03-2014 09:56 от sergeyan » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 06-03-2014 11:01 » 

sergeyan, добавить try...catch и ловить проблемы.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
darkelf
Молодой специалист

ua
Offline Offline

« Ответ #2 : 06-03-2014 11:21 » 

sergeyan, сорри, не работал с C#, но возможно по аналогии с C (точнее там тоже можно такое организовать):
Код: (C#)
while(1)
{ if (ns.DataAvailable())  
  { if (ns.read(da,0,ns.ReceiveBufferSize ) == 0)
    break;
  }
}
А ошибки связи вроде да, через исключение IOException ловится.
Записан
Serguntii
Помогающий

ru
Offline Offline

« Ответ #3 : 06-03-2014 11:26 » 

Тоже так сделал работает, но если просто разъем вытащить ничего не происходит.
Записан
darkelf
Молодой специалист

ua
Offline Offline

« Ответ #4 : 06-03-2014 11:33 » new

Тоже так сделал работает, но если просто разъем вытащить ничего не происходит.
а почему Вы думаете, что что-то должно быть? вообще в стеке TCP/IP довольно большие тайм-ауты, а если не указан признак KEEPALIVE так вообще соединение может висеть сутками без приёма/передачи каких-либо данных. Выдёргивание кабеля никак не влияет на сетевой интерфейс - можно через пол-часа вставить кабель и, если на другой стороне абонент не отвалился - всё продолжит работать.
« Последнее редактирование: 06-03-2014 11:35 от darkelf » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines