Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Работа с сетью > Отловить обрыв соединения с помощью Java |
Автор: samolisov 13.1.2010, 09:47 |
Здравствуйте, коллеги. Пишу библиотеку, реализующую ICQ-протокол. Возникла проблема отслеживания обрыва соединения с сервером. Понятно, что во-первых в диалоге может быть пауза, во-вторых, соединение может быть просто разорвано и нужно отличать эти две ситуации. Для этого советуют использовать схему "пинг-понг", но сервер ICQ такую схему не реализует. В то же время, например PSI (jabber-клиент) умеет сразу же обнаруживать разрыв соединения. Вопрос такой: как с помощью Java (Socket API или что-то другое) отследить момент разрыва соединения? Если, например, писать в сокет после разрыва соединения, то никаких IOException не генерируется. В то же время делать ping с помощью ICMP-пакетов в Java вроде бы нельзя (если не использовать напрямую команду ОС ping, но это нежелательно). Буду благодарен за любую помощь. |
Автор: COVD 14.1.2010, 17:44 | ||
На самом деле сообщения пишутся в буфер, а сокет пытается доставить их получателю. Если лимит неудач будет достигнут, то соединение будет признано разорванным и вот тогда уже запись вызовет исключение. |