С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 01.06.2010
Сообщений: 49

Как определить, что сокет с которым я работаю - закрылся?

29.06.2010, 07:05. Показов 4380. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет Всем!!

Люди добрые, помогите!
Как определить, что сокет с которым я работаю - закрылся?
Что-то бьюсь уже который день, но так ничего и не нашёл.

Использую java 1.4 - там есть функции isConnected и isClosed. Но обе упорно возвращают значения, судя по которым сокет открыт.
Но я точно знаю, что соединения нету.

Что делать?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.06.2010, 07:05
Ответы с готовыми решениями:

Файл проджекта с которым я работаю, перестал открываться...
Ребят, нииииид хелпу и ваши светлые советы.. КОмп прошел Авастом.. Ничего необычного, все как всегда... ПРосканировал.. Перезапустил...

Как определить каталоги, к которым нет определённых прав доступа?
Добрый вечер, собственно такие вопросы: Как определить: - количество подкаталогов в /home к которым нет публичных прав доступа. -...

Как только происходит попытка создать сокет для UDP - сокет TCP сразу ломается (выдает 10093).
Добрый день. Пытаюсь сделать соединение, использующее два канала обмена данными - TCP для управления в режиме клмиента, и UDP - для...

5
0 / 0 / 0
Регистрация: 01.06.2010
Сообщений: 49
29.06.2010, 07:27  [ТС]
я нашёл пока временное решение. Можно время от времени вызывать функцию sendUrgentData и, тогда, если сокет закрылся то вылетит exception.

Никто не знает насколько это корректно? Что на самом деле делает эта функция (слово urgent переводится как 'крайне необходимый', 'настоятельный' - не пойму что это значит) и вообще как правильно распознавать закрытие сокета?
0
1 / 1 / 2
Регистрация: 07.01.2010
Сообщений: 128
29.06.2010, 10:21
На самом деле, насколько я понял, вы говорите о двух разных вещах. Одно дело - сокет закрыт, другое - нет связи, например, peer отвалился. Первое не следует из второго автоматически, поскольку невозможно узнать, жив ли противоположный конец, если не послать ему какие-нибудь данные. Так что вы сейчас делаете как раз то, что нужно. Что касается urgent data, это переводится 'срочные данные', это из терминологии TCP (на самом деле наверное все сетевые протоколы такое поддерживают). Хотя ничто не мешает послать обычные данные вместо срочных, например new OutputStreamWriter(mySocket.getOutputStr eam())).write('ping').
0
0 / 0 / 0
Регистрация: 01.06.2010
Сообщений: 49
29.06.2010, 10:48  [ТС]
Спасибо за ответ! Значит я всё правильно сделал!

P.S. На самом деле событие завершения связь на другом конце сокета и разрыв связи из-за того, что peer отвалился, для меня эквивалентны.

P.P.S. Кстати я не могу просто так написать в сокет какую-то строку - т.к. мой класс выполняет роль прокси - т.е. он не может менять данные.

Я просто не знаю - то, что я посылаю под понятием 'срочные данные' - не влияет ли это как-то на сам протокол TCP или его какие-то настройки ? Я посылаю просто один байт = 0.
0
1 / 1 / 2
Регистрация: 07.01.2010
Сообщений: 128
29.06.2010, 11:14
Срочность данных на протокол никак не влияет. Влияет только на приоритер доставки пакетов: если есть очередь пакетов на отправку, срочные пакеты не будут в ней стоять, а переместятся сразу в начало.
Насчет того, что для вас эквивалентны корректное и некорректное закрытие соединения: они, как правило, для всех пользователей эквивалентны. Разница как раз в том, что при корректном закрытии peer оповещает peer'а о том, что связь завершается, и сокет сразу закроется. В противном случае сокет либо отвалится по timeout (в TCP, если память не изменяет, умолчательный timeout что-то 40 минут или час), либо обнаружит проблему при попытке послать данные.
0
1 / 1 / 2
Регистрация: 07.01.2010
Сообщений: 128
29.06.2010, 11:17
Да, насчет timeout в TCP: имелось в виду, что через определенные промежутки времени протокольный модуль TCP посылает тестовые пакеты, чтобы проверить работоспособность peer, и не имеется в виду, что если в течение часа не посылать данные, то коннекция закроется.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.06.2010, 11:17
Помогаю со студенческими работами здесь

CAsyncSocket - запрос приходит кусками, как сервер-сокет может определить конец приёма?
Здрасьте всем! Всё ещё делаю маленький веб-сервер под Windows XP на Visual Studio 5. Чтобы сымитировать напряженный трафик я...

Combobox. Открыт список. Как изменить высоту списка? Без "закрылся-открылся"
subj

За что отвечает сокет
Доброго времени суток. Подскажите пожалуйста, есть плата (1155). Немного испорчен сокет, но плата полностью исправна, нет пока что...

Что такое сокет
1. Что такое сокет? 2. Как программировать с использованием сокетов?

Что такое сокет?
Добрый вечер! Разложите, пожалуйста, по полочкам без посторонних ссылок, что такое сокет в сетях? Не хватает глубинного смысла. Спасибо.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru