2017-01-12 6 views

ответ

0

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

bool SocketConnected(Socket s) 
    { 
     bool part1 = s.Poll(1000, SelectMode.SelectRead); 
     bool part2 = (s.Available == 0); 
     if (part1 && part2) 
      return false; 
     else 
      return true; 
    } 

Это работает так:

s.Poll возвращает истину, если

  • соединение закрывается, сброс, прекращается или задержка (не означает никакого активного подключение)
  • подключение активно и имеются данные для чтения

s.Available возвращает количество байт, доступных для чтения

если оба истинны: там нет доступных для чтения данных, чтобы соединение не является активным