|
0 / 0 / 0
Регистрация: 01.06.2010
Сообщений: 49
|
|
Как определить, что сокет с которым я работаю - закрылся?29.06.2010, 07:05. Показов 4380. Ответов 5
Метки нет (Все метки)
Привет Всем!!
Люди добрые, помогите! Как определить, что сокет с которым я работаю - закрылся? Что-то бьюсь уже который день, но так ничего и не нашёл. Использую java 1.4 - там есть функции isConnected и isClosed. Но обе упорно возвращают значения, судя по которым сокет открыт. Но я точно знаю, что соединения нету. Что делать?
0
|
|
| 29.06.2010, 07:05 | |
|
Ответы с готовыми решениями:
5
Файл проджекта с которым я работаю, перестал открываться... Как определить каталоги, к которым нет определённых прав доступа? Как только происходит попытка создать сокет для UDP - сокет TCP сразу ломается (выдает 10093). |
|
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
|
|
| 29.06.2010, 11:17 | |
|
Помогаю со студенческими работами здесь
6
Combobox. Открыт список. Как изменить высоту списка? Без "закрылся-открылся" За что отвечает сокет Что такое сокет Что такое сокет? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Изучаю 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 считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|