Название: Помогите ПЛЗ. Прием UDP Отправлено: Dmitry от Январь 28, 2015, 01:12 Понимаю что тема вроде как изъезжена, но все равно ничего не пойму в чем проблема. НУ ОЧЕНЬ НУЖНО
Не могу понять почему не принимаются пакеты UDP? Суть в следующем с ПЛИС посылаются UDP, Wireshark их ловит: 1 0.000000000 192.168.1.2 192.168.1.1 UDP 60 Source port: 5125 Destination port: 5125 а программа совсем никак. firewall отключил, пробовал и из под рута и так - все непочем. Если запускать клиент и сервер на обном компе то все ок как по примеру из всех книг, а с ПЛИС вообще ни как запускаюсь на Centos 7, Qt 5.4 Подскажите что тут не так Код: udpSocket = new QUdpSocket(this); Название: Re: Помогите ПЛЗ. Прием UDP Отправлено: Old от Январь 28, 2015, 08:27 Код
Название: Re: Помогите ПЛЗ. Прием UDP Отправлено: Dmitry от Январь 28, 2015, 14:37 Спасибо, но к сожалению Не прокатывает оба варианта,
Вообще если честно не могу понять в чем принципиальная разница при приеме UDP сервера и клиента на одной машине, а чем и почему не получается прослушать порт при подключении ПЛИС по Ethernet? Какие могут быть еще варианты? Название: Re: Помогите ПЛЗ. Прием UDP Отправлено: CuteBunny от Февраль 03, 2015, 13:13 Спасибо, но к сожалению Не прокатывает оба варианта, Вообще если честно не могу понять в чем принципиальная разница при приеме UDP сервера и клиента на одной машине, а чем и почему не получается прослушать порт при подключении ПЛИС по Ethernet? Какие могут быть еще варианты? Если я не ошибаюсь, то при запуске сервера и клиента на одной машине, все происходит на loopback'е. Какие у вас там вообще есть еще сетевые интерфейсы? Может сервер шлет данные по-одному интерфейсу, а программа слушает на другом, а wireshark слушает на всех? Ну и netstat можно посмотреть при запущенном слушателе? Название: Re: Помогите ПЛЗ. Прием UDP Отправлено: Hellraiser от Февраль 03, 2015, 15:11 WireShark не слушает пакеты на localhost: http://wiki.wireshark.org/CaptureSetup/Loopback
Название: Re: Помогите ПЛЗ. Прием UDP Отправлено: Bepec от Февраль 03, 2015, 16:02 Код: socket8202_ = new QUdpSocket; Компьютер посылал ПЛИС дополнительный udp запрос - насколько я помню что то типа запроса имени, на что плис отвечала молчанием и udp пакет отбрасывался. Оо вспомнил. Запрашивался мак адрес карточки. Но плисина на это не рассчитывалась. Собственно было и решение проблемы - вот такой вот bat файл Код: arp -s 192.168.180.10 22-33-44-55-66-AA 192.168.108.4 собственно первый ip - это возможные ip ПЛИС с прописанными мак адресами. Второй ip - ip принимающего компьютера. PS И пакеты начинали приниматься приложением. :) PPS да, собственно я разбирался в том инциденте, так сказать. Запрашивается mac адрес карточки для привязки к ip, но ПЛИС может только слушать и отправлять датаграммы, более полную реализацию сетевого протокола в неё не запихали :) Название: Re: Помогите ПЛЗ. Прием UDP Отправлено: CuteBunny от Февраль 03, 2015, 16:14 Код: socket8202_ = new QUdpSocket; Компьютер посылал ПЛИС дополнительный udp запрос - насколько я помню что то типа запроса имени, на что плис отвечала молчанием и udp пакет отбрасывался. Оо вспомнил. Запрашивался мак адрес карточки. Но плисина на это не рассчитывалась. Собственно было и решение проблемы - вот такой вот bat файл Код: arp -s 192.168.180.10 22-33-44-55-66-AA 192.168.108.4 собственно первый ip - это возможные ip ПЛИС с прописанными мак адресами. Второй ip - ip принимающего компьютера. PS И пакеты начинали приниматься приложением. :) PPS да, собственно я разбирался в том инциденте, так сказать. Запрашивается mac адрес карточки для привязки к ip, но ПЛИС может только слушать и отправлять датаграммы, более полную реализацию сетевого протокола в неё не запихали :) Не совсем понимаю при чем здесь протокол arp? Название: Re: Помогите ПЛЗ. Прием UDP Отправлено: CuteBunny от Февраль 03, 2015, 16:15 WireShark не слушает пакеты на localhost: http://wiki.wireshark.org/CaptureSetup/Loopback localhost ~ 127.0.0.1, но это не сетевой интерфейс какбэ. Читаем ниже по той же ссылке: Supported Platforms See CaptureSetup/NetworkMedia for Wireshark capturing support on various platforms. Summary: you can capture on the loopback interface on Linux, on various BSDs including Mac OS X, and on Digital/Tru64 UNIX, and you might be able to do it on Irix and AIX, but you definitely cannot do so on Solaris, HP-UX, or Windows. Название: Re: Помогите ПЛЗ. Прием UDP Отправлено: Bepec от Февраль 03, 2015, 17:20 Поясню для kvv.
Ситуёвина: ПЛИС посылает UDP пакет с данными и имеет ip 192.168.1.6. Компьютер получая пакет от неизвестного узла пытается узнать его MAC адрес при помощи протокола arp. На arp запрос ПЛИС не реагирует - оно умеет только udp слать и принимать. Результат: Пакеты от компьютера не доходят до ПЛИС - потому что нет мак адреса в таблице и компьютер вообще не в курсе куда слать данные. Пакеты от ПЛИС отбрасываются компьютером, причину я не знаю, но в сокет данные не попадают. Их можно получить только добавив в arp запись об ПЛИС или же включением захвата на сетевой карте. PS данная схема происходит на Windows xp/7. Собственно проблема аналогична описанной в первом сообщении. Т.к. сетевые протоколы не привязаны к ОС, я предполагаю что сценарий одинаков для большинства операционных систем и мой совет может решить проблему. PPS Если же я неправ (что будет странно, ведь способ 100% решает подобную проблему), я буду рад выслушать ваши соображения и поправки к моим репликам :) Название: Re: Помогите ПЛЗ. Прием UDP Отправлено: CuteBunny от Февраль 03, 2015, 18:15 Поясню для kvv. Ситуёвина: ПЛИС посылает UDP пакет с данными и имеет ip 192.168.1.6. Компьютер получая пакет от неизвестного узла пытается узнать его MAC адрес при помощи протокола arp. На arp запрос ПЛИС не реагирует - оно умеет только udp слать и принимать. Результат: Пакеты от компьютера не доходят до ПЛИС - потому что нет мак адреса в таблице и компьютер вообще не в курсе куда слать данные. Пакеты от ПЛИС отбрасываются компьютером, причину я не знаю, но в сокет данные не попадают. Их можно получить только добавив в arp запись об ПЛИС или же включением захвата на сетевой карте. PS данная схема происходит на Windows xp/7. Собственно проблема аналогична описанной в первом сообщении. Т.к. сетевые протоколы не привязаны к ОС, я предполагаю что сценарий одинаков для большинства операционных систем и мой совет может решить проблему. PPS Если же я неправ (что будет странно, ведь способ 100% решает подобную проблему), я буду рад выслушать ваши соображения и поправки к моим репликам :) Ок, спасибо. Название: Re: Помогите ПЛЗ. Прием UDP Отправлено: billidean от Ноябрь 27, 2015, 15:32 И вообще, в данном проекте для ПЛИС должна быть реализована реакция на ARP и ECHO, это как минимум, иначе могут возникать подобные проблемы.
Как уже было сказано, комп (например Винда), по истечении некоторого неопределенного времени будет запрашивать МАК-адрес девайса (ПЛИСки) для обновления своей таблицы соединений, и ОЕНЬ захочет что-то получить в ответ. А если не получит, то все пакеты от этого девайса будут отсеиваться самой ОС (Виндой). И т.п.... З.Ы.: даже если я и опоздал с ответом, это может помочь последующим читателям :) Название: Re: Помогите ПЛЗ. Прием UDP Отправлено: Racheengel от Ноябрь 27, 2015, 23:25 А на других ос так же не работает?
Название: Re: Помогите ПЛЗ. Прием UDP Отправлено: Bepec от Ноябрь 28, 2015, 07:45 Ну, в моём случае на линуксе тоже не работало, всё так же из-за отсутствия привязки к маку.
to billidean: по хорошему в плисине много чего должно быть, но плисина ограничена задачей. Или так, или не лезет. |