9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
|
|
1 | |
udp socket13.03.2012, 23:52. Показов 6943. Ответов 7
Метки нет (Все метки)
Вобщем Как узнать что udp порт открыт? tcp обязан ответить на соединение, но udp не принимает соединение, и по моему он не обязан отвечать. Как же работают сканеры udp портов? Поделитесь опытом.
0
|
13.03.2012, 23:52 | |
Ответы с готовыми решениями:
7
UDP Socket рассылка Udp: socket не коннектится Udp socket Программирование Udp socket в билдере |
19 / 11 / 0
Регистрация: 02.09.2010
Сообщений: 235
|
|
14.03.2012, 00:54 | 2 |
Без ответа помоему никак. Протокол UDP не гарантирует доставку пакета, в нем нет проверки на доставку, и потому в рамках его самого (протокола) не проверить открыт ли порт.
Когда вы вызываете функцию cpnnect - она лишь связывает сокет за определенным адресом и после этой операции будет принимать пакеты только от него. Чисто физически такого соединения, как в случае с tcp, не устанавливается. Нужно чтобы сервер при получении UDP пакета (или вообще точка, которую вы проверяете) как-то реагировал. Например при приходе такого пакета отправляла отправителю ответный UDP пакет. Насчет сканеров думаю нужно отснифферить, они наверно шлют пинги и всякую хрень и слушают приходит ли что-то в ответ. Если я неправ, отпишитесь, самому интересно
0
|
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
|
|
14.03.2012, 01:50 [ТС] | 3 |
Это кстате вариант.
Вот к примеру один из сканеров XSpider нашёл на "zaycev.net" 123 udp порт. Но как я не пыдался туда что-то послать в ответ ничего не приходит. Вот тут я и задумался как же так, если мне ничего в ответ не приходит как же тогда эта чудо программа это понимает? Порылся на вики в разделе udp но там тоже ничего нет. А вот насчёт пинга это очень даже вероятно т.к. тот же XSpider сканирует 3 tcp порта за пару секунд, а на 3 udp уходит секунд 10. Это тоже заставило задуматся. Я тоже думал запастись снифером, но не знаю каким. Подскажи какой лучше?
0
|
14.03.2012, 10:12 | 4 |
открыть сокет, (socket)
"соеденить" с указанным адресом (connect) послать данные (проверить ошибку) принять данные (проверить ошибку) по идее в случае невалидности порта ICMP пришлет соответствующий пакет, который на присоединенном сокете отразится ошибкой на операции. ошибка ECONNREFUSED. Этот вариант работает для случая если ICMP не перекрыто.
0
|
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
|
|
14.03.2012, 17:08 [ТС] | 5 |
Это как? udp сокет не требует соединения и не отвечает на него.
Какую ошибку? Из-за отправки даных её помоему впринципе быть не может. А если их не кто не отправляет? Это же udp Ну я где-то читал что некоторые ОС если udp порт не занят то отправляют какуюто ошибку в ответ. Но где не пробовал в ответ ничего.
0
|
14.03.2012, 17:20 | 6 |
После привязки можно пользоваться send и recv наряду с sendto и recvfrom а еще в случае присоединенного UDP сокета: как раз тот самый случай. Добавлено через 1 минуту
0
|
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
|
|
14.03.2012, 18:18 [ТС] | 7 |
villu, я не знаю о чём вы говорите, я пробовал на локалхосте уже все варианты и некаких ошибок вобще нету. Различий между открытым и закрытым портом просто не нашёл.
0
|
14.03.2012, 20:03 | 8 |
Ну у меня такой сценарий работает даже при попытке обратится к неоткрытому порту соседней машины.
А на локалхосте ты всегда можешь "netstat -ban" (-an для linux) вызвать в консоле и посмотреть что открыто и кем открыто. Еще попытка сделать bind для существующего открытого адреса так же приводит к ошибке.
0
|
14.03.2012, 20:03 | |
14.03.2012, 20:03 | |
Помогаю со студенческими работами здесь
8
Использовать udp socket в com объекте Real time на Socket (udp) Socket UDP проверить открыт ли порт udp socket косяки при получении данных Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |