powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Windows [игнор отключен] [закрыт для гостей] / Занят ли порт в такой ситуации?
13 сообщений из 13, страница 1 из 1
Занят ли порт в такой ситуации?
    #39578703
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запустил свой сервис, он слушает порт 8900, затем остановил его, изменил в конфигурации порт на 8910, стартонул всё ок.
Запустил ресурс монитор, вижу в Listening ports:

Image PID Address Port Protocol Firewall status
-------- ---- ---------- ----- --------- ----------------
System 4 IPv6 unspecified 8900 TCP Allowed, not restricted


Как это понять? порт остался занят системой?
Его больше нельзя использовать другим приложениям?
...
Рейтинг: 0 / 0
Занят ли порт в такой ситуации?
    #39578707
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Монитор ресурсов показывает не мгновенное состояние, а статистику за некоторое время.
Используй netstat.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Занят ли порт в такой ситуации?
    #39578710
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovМонитор ресурсов показывает не мгновенное состояние, а статистику за некоторое время.
Используй netstat.


да, спасибо,
когда сервис стартован

>netstat -ano

показывает, что System слушает 8900
когда остановлен - пусто
...
Рейтинг: 0 / 0
Занят ли порт в такой ситуации?
    #39578717
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно, что TCPView (Sysinternals) поазывает, что порт слушается системой вто же время. когда netstat не показывает.

TCPView тоже дает не актуальное состояние?
...
Рейтинг: 0 / 0
Занят ли порт в такой ситуации?
    #39578728
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выгрузка слушающего процесса ещё не означает закрытия сокета IP-стеком. По практическим наблюдениям - до 15 минут...
Причина обычная - криворукость программера. Полагаются на чистильщиков и разгрузки ресурсов по умолчанию, а оно вона как...
...
Рейтинг: 0 / 0
Занят ли порт в такой ситуации?
    #39578741
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaВыгрузка слушающего процесса ещё не означает закрытия сокета IP-стеком. По практическим наблюдениям - до 15 минут...
Причина обычная - криворукость программера. Полагаются на чистильщиков и разгрузки ресурсов по умолчанию, а оно вона как...

в данном случае может и криворукость, но это виндоуз WCF SOAP сервис, там руками закрыть сокет негде, или как минимум я не вижу, где. Ну, и приложение завершается.
...
Рейтинг: 0 / 0
Занят ли порт в такой ситуации?
    #39578782
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
256kAkinaВыгрузка слушающего процесса ещё не означает закрытия сокета IP-стеком. По практическим наблюдениям - до 15 минут...
Причина обычная - криворукость программера. Полагаются на чистильщиков и разгрузки ресурсов по умолчанию, а оно вона как...

в данном случае может и криворукость, но это виндоуз WCF SOAP сервис, там руками закрыть сокет негде, или как минимум я не вижу, где. Ну, и приложение завершается.
Так это не бага, это фича , клиент должен закрыть соединение, чтобы порт освободился при остановке сервиса.
А если клиент отвалился, а сервис остановился - Windows сама решит, когда по таймауту освободить занятый порт TCP.
Я так себе представляю этот механизм, возможно, ошибаюсь.
...
Рейтинг: 0 / 0
Занят ли порт в такой ситуации?
    #39578783
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andy_OLAP,

И не исключено, что в данном случае TCPView - это клиент, который проверяет путем коннекта к TCP портам сервисов.
Ну а как обычно написаны клиенты в Редмонде - это песня. Например, ASP.NET Web нужно помнить и все явно закрывать .
...
Рейтинг: 0 / 0
Занят ли порт в такой ситуации?
    #39578804
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andy_OLAPэто не бага, это фича, клиент должен закрыть соединение, чтобы порт освободился при остановке сервиса.
Помнишь старый такой анекдот:

Код: plaintext
1.
2.
3.
Подходит молодой программист к опытному с длинным листингом в руках, и спрашивает:
- Что-то не компилируется, посмотрите, пожалуйста, где ошибка...
Тот, не поднимая головы:
- Где-где... ошибка - в генах.

В данном случае - подходит на 100%.
...
Рейтинг: 0 / 0
Занят ли порт в такой ситуации?
    #39578864
Фотография bga83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaВыгрузка слушающего процесса ещё не означает закрытия сокета IP-стеком. По практическим наблюдениям - до 15 минут...
Причина обычная - криворукость программера. Полагаются на чистильщиков и разгрузки ресурсов по умолчанию, а оно вона как...несколько лет назад пришлось немного столкнуться с данной темой. Если память не изменяет, то ситуация выглядит примерно так в Windows: после завершения работы процесса, слушающего порт, сетевой стек ОС не прибирает связанные процессы сразу, а переводит их в "полузакрытое" состояние. Реализовано с целью, если процесс запросит заново тот же самый порт, то чтобы инициализация прошла быстрее. По таймауту все естественно прибивается
...
Рейтинг: 0 / 0
Занят ли порт в такой ситуации?
    #39578879
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bga83AkinaВыгрузка слушающего процесса ещё не означает закрытия сокета IP-стеком. По практическим наблюдениям - до 15 минут...
Причина обычная - криворукость программера. Полагаются на чистильщиков и разгрузки ресурсов по умолчанию, а оно вона как...несколько лет назад пришлось немного столкнуться с данной темой. Если память не изменяет, то ситуация выглядит примерно так в Windows: после завершения работы процесса, слушающего порт, сетевой стек ОС не прибирает связанные процессы сразу, а переводит их в "полузакрытое" состояние. Реализовано с целью, если процесс запросит заново тот же самый порт, то чтобы инициализация прошла быстрее. По таймауту все естественно прибивается

это похоже на мой случай
...
Рейтинг: 0 / 0
Занят ли порт в такой ситуации?
    #39578880
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andy_OLAP256kпропущено...


в данном случае может и криворукость, но это виндоуз WCF SOAP сервис, там руками закрыть сокет негде, или как минимум я не вижу, где. Ну, и приложение завершается.
Так это не бага, это фича , клиент должен закрыть соединение, чтобы порт освободился при остановке сервиса.
А если клиент отвалился, а сервис остановился - Windows сама решит, когда по таймауту освободить занятый порт TCP.
Я так себе представляю этот механизм, возможно, ошибаюсь.

частично так, но: у меня wcf сервис с конфиг файлом, не рукопашным созданием/закрытием каналов и т.д.
Следовательно - вся надежда на wcf среду.
Всё, что я могу - стартонуть сервисы на старте винсервиса и остановить их на стопе.
...
Рейтинг: 0 / 0
Занят ли порт в такой ситуации?
    #39578898
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нормальное (gracefully) закрытие сокета делается в два этапа этапа:
1. Сервер закрывает канал записи (shutdown send);
2. Клиент дочитывает данные и делает "shutdown full" со своей стороны - сервер получает EOF на канале чтения и делает или "shutdown read" или "shutdown full".
На уровне IP-стека это всё означает обмен пакетами с FIN-флагом с обоих сторон. Клиента и сервера IP-стек различает по (соответственно) отправке и приёму пакета с SYN-флагом.

При быстром (dirty) завершении сервер сразу закрывает и канал записи и канал чтения (делает shutdown full), не ожидая реакции клиента. В этой ситуации клиент может получить исключение ввода-вывода в канале записи и, по хорошему, должен быть готов к обработке такой ситуации.

Обмен пакетами требует времени и возможен вариант, когда процесс сервера завершился, но финальные пакеты от клиентов ещё не пришли. Такие сокеты будут "прибраны" IP-стеком "серверной стороны" по получении FIN-пакетов клиента или по таймеру.

Вроде, новый процесс без проблем может занять порт полузакрытых сокетов "слушающим", если предыдущий процесс корректно освободил свои ресурсы.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Windows [игнор отключен] [закрыт для гостей] / Занят ли порт в такой ситуации?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]