|
Модераторы: feodorv |
|
Alexey68 |
|
|||
Alexey Профиль Группа: Участник Сообщений: 98 Регистрация: 10.4.2013 Репутация: нет Всего: нет |
Hi All.
При попытке отослать пакет на роутер (192.168.0.1), от него приходит ответ: ICMP:Destination Unreachable Message, а если отослать пакет на компьютер (в лок. сети 192.168.0.53), то тишина.... ОС xp sp3. Трафик смотрю Ms network monitor. Программа отрабатывает без ошибки. Вот код (чужой):
Прошу Вашей помощи. Это сообщение отредактировал(а) Alexey68 - 27.7.2015, 17:07 |
|||
|
||||
feodorv |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 10 Всего: 45 |
Вы, собственно, сформированный отправляемый пакет разбирали по винтику? Сравнивали, например, с тем, что порождает команда
Где проверка remoteHost->h_addrtype на AF_INET (иначе h_length будет не такой, какой Вы её ожидали). Настолько сложно посчитать контрольную сумму? Я не уверен, что и v4hdr->ip_checksum можно оставлять нулевой. Зачем же так жестоко? Код отсюда взят что-ли? -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
Alexey68 |
|
|||
Alexey Профиль Группа: Участник Сообщений: 98 Регистрация: 10.4.2013 Репутация: нет Всего: нет |
Спасибо feodorv!
пока не проверял... это обязательное требование? да. искал минимальный пример отправки пакета, но кроме этого не нашёл (наверное не так искал). |
|||
|
||||
feodorv |
|
||||
Эксперт Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 10 Всего: 45 |
Для TCP - да. Для UDP - нет. Заметил, что у Вас, не смотря на всестороннее описание TCP заголовка, в IP-заголовке внезапно прописывается
Ну, тогда держите для UDP:
-------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||
|
|||||
Alexey68 |
|
|||
Alexey Профиль Группа: Участник Сообщений: 98 Регистрация: 10.4.2013 Репутация: нет Всего: нет |
Отсутствие твёрдой "базы" даёт о себе знать...) Очень признателен. Извиняюсь, но при запуске: sendto: требуемый адрес для своего контекста неверен. Прописываю существующие адреса: ipHdr->ip_source = inet_addr( "192.168.0.55" ); ipHdr->ip_dest = inet_addr( "192.168.0.1" );//роутер Это сообщение отредактировал(а) Alexey68 - 28.7.2015, 15:20 |
|||
|
||||
feodorv |
|
||||
Эксперт Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 10 Всего: 45 |
По-моему, что-то не то с конфигурацией сети. Нельзя ли увидеть результат выполнения команд
Это сообщение отредактировал(а) feodorv - 28.7.2015, 17:30 -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||
|
|||||
Alexey68 |
|
|||
Alexey Профиль Группа: Участник Сообщений: 98 Регистрация: 10.4.2013 Репутация: нет Всего: нет |
||||
|
||||
feodorv |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 10 Всего: 45 |
Гм. На вид, всё хорошо. Есть ещё вариант, что номер udp_src_port не отвечает конфигурации системы. Если У Вас в предыдущем варианте
-------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
Alexey68 |
|
|||
Alexey Профиль Группа: Участник Сообщений: 98 Регистрация: 10.4.2013 Репутация: нет Всего: нет |
выключен.
в таком варианте нормально работал: udpHdr->udp_src_port = htons( 80 ); udpHdr->udp_dst_port = htons( 80 ); выставлял dest = 23, src = 80 тоже работало... IDE Borland c++ 2007 если необходимо. ... Пробовал на другом компе, результат тот же (xp sp3). Какая у Вас ОС? Это сообщение отредактировал(а) Alexey68 - 29.7.2015, 03:44 |
|||
|
||||
feodorv |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 10 Всего: 45 |
Как раз
А Вы не могли бы скомпилиться в MSVSC++ и проверить? Добавлено через 1 минуту и 34 секунды Стоп. То есть всё получилось (пусть и с 80-тыми портами)? -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
Alexey68 |
|
|||
Alexey Профиль Группа: Участник Сообщений: 98 Регистрация: 10.4.2013 Репутация: нет Всего: нет |
Получалось с "моим" кодом. В VS2008 работает без проблем, только ругается: CharToOemW: невозможно преобразовать параметр 1 из 'char *' в 'LPCWSTR' В борланде компилируется нормально, но ошибка 10049. Проверил в отладчике всё нормально, но при выполнении sendto результат 10049... Из Microsoft Network Monitor 3.4: Udp: SrcPort = HTTP(80), DstPort = Telnet(23), Length = 21 В ответ: Icmp: Destination Unreachable Message, Port Unreachable, 192.168.0.1:23 Так и должно быть (порт не доступен)? p.s. хотел проверить доступность порта. Это сообщение отредактировал(а) Alexey68 - 29.7.2015, 17:00 |
|||
|
||||
feodorv |
|
||||
Эксперт Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 10 Всего: 45 |
Отключите UNICODE. Всё равно printf в коде на него не рассчитан.
Где-то в сети я читал про такое. Решения не давалось. Этот порт (UDP 23) на роутере закрыт, вполне всё правильно. У меня тоже самое. Добавлено через 6 минут и 54 секунды У меня вопрос, Вам точно сырой сокет нужен? -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||
|
|||||
Alexey68 |
|
|||
Alexey Профиль Группа: Участник Сообщений: 98 Регистрация: 10.4.2013 Репутация: нет Всего: нет |
||||
|
||||
feodorv |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 10 Всего: 45 |
Не забывайте, что Вы на эти порты заходите по UDP, не TCP. Как раз UDP-порты закрыты. Что-то вроде nmap? У неё сурсы, кстати, открыты. Это сообщение отредактировал(а) feodorv - 29.7.2015, 18:02 -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
Alexey68 |
|
|||
Alexey Профиль Группа: Участник Сообщений: 98 Регистрация: 10.4.2013 Репутация: нет Всего: нет |
Если я правильно понимаю, то в Вашем примере необходимо заменить udp заголовок на tcp (для отправки полного tcp/ip пакета)?
Это сообщение отредактировал(а) Alexey68 - 30.7.2015, 21:53 |
|||
|
||||
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |