![]() |
|
Модераторы: gambit |
![]()
|
|
| Competitor |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 23.3.2005 Где: Tula Репутация: нет Всего: -1 |
После инициализации сокета и вызова метода Connect() каким образом можно узнать, установлено ли соединение или нет?
Ведь при попытке соединения с заведомо закрытым портом свойство socket.Connected все равно установлено в true |
|||
|
||||
| Gelis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 26.10.2006 Где: Брест Репутация: нет Всего: 4 |
Так ведь UDP он на то и UDP - что это протокол без создания соединения.
Можно правда попробавать от клиента отправлять сразу же мессагу о том что пакет пришел. Это сообщение отредактировал(а) Gelis - 8.2.2007, 21:15 |
|||
|
||||
| Competitor |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 23.3.2005 Где: Tula Репутация: нет Всего: -1 |
Ну хорошо. А как тогда узнать открыт порт или закрыт?
|
|||
|
||||
| -Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 1 Всего: 59 |
ИМХО никак, наверное...
а это значит что посылающему по UDP, должно быть безразлично, есть там кто-то или нет, открыт порт, или закрыт... короче пофиг ему должно быть на все, раз он UDP... Добавлено @ 16:12 для какой цели то тебе понадобилось проверять есть ли по UDP слушающий? Что-то необычное должно быть... -------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
| Competitor |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 23.3.2005 Где: Tula Репутация: нет Всего: -1 |
В инете прочитал, что можно использовать метод write(). Типа если порт закрыт, то метод вернет ошибку.
Только вот куда записывать? В поток? Каким образом. У кого-нить есть предложения. Чтобы не быть многословными давайте сразу пример |
|||
|
||||
| -Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 1 Всего: 59 |
На практике только что попробовал с Socket и с UdpClient вызывать метод SendTo и Send соответственно, ни один не дал ошибку... точно о UDP шла речь?
-------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
| Competitor |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 23.3.2005 Где: Tula Репутация: нет Всего: -1 |
Сканирование UDP-портов проверкой ICMP-сообщения "Порт недоступен" Большинство серверов в ответ на пакет, прибывший на закрытый UDP-порт, отправляют ICMP-сообщение "Порт недоступен" (Port Unreachable - PU). Таким образом, если в ответ на UDP-пакет пришло ICMP-сообщение PU, то сканируемый порт является закрытым, в противном случае (при отсутствии PU) порт открыт. Поскольку нет гарантии, что запросы от хоста дойдут до сервера, пользователь должен позаботиться о повторной передаче UDP-пакета, который, по всей видимости, оказался потерянным. Сканирование UDP-портов с использованием функций recvfrom() и write() Этот метод используется в случае, когда пользователь, проводящий сканирование, не обладает статусом Root на хосте. Поскольку не-root пользователь не может "читать" ICMP-сообщение PU, в ОС, поддерживающих механизм сокетов (например в Linux), имеется возможность получения информации о состоянии UDP-порта косвенным способом. Так, например, попытка вызова функции write() на закрытый порт обычно приводит к возникновению ошибки. Функция recvfrom() в этом плане более информативна. Вызов ее на неблокированный UDP-сокет сервера обычно возвращает ошибку EAGAIN (Try Again - "попытайтесь еще раз", код 13) в случае, когда ICMP-сообщение не было принято, и ECONREFUSED (Connection Refused - "соединение закрыто", код 111), если ICMP-сообщение было принято. Таким образом, по этим признакам также возможно определить состояние портов сканируемого сервера. Взято из http://cherepovets-city.ru/insecure/runmap...ap-portscan.htm |
|||
|
||||
| Competitor |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 23.3.2005 Где: Tula Репутация: нет Всего: -1 |
Вот так вот можно определить открыт ли порт udp или нет:
Т.е. в случае, если порт оказывается закрыт, то сервак остылает клиенту icmp message. Это сообщение отредактировал(а) Competitor - 9.2.2007, 19:42 |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Распределённые приложения и сеть | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |