Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: W5100
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Fast Ethernet/Gigabit Ethernet/FibreChannel
Метценгерштейн
в даташите такая картинка
http://c2n.me/iNFnYP
т.е. принял модуль данные по UDP, выдал мне их как на картинке. А на самом деле есть еще и src IP, а он только dst показывает. Wireshark показывает целиком пакет, а W5100 выхватывает из него части и показывает их мне.
Нельзя ли как-то в W5100 получить в том числе и src IP при приеме пакета?
Сергей Борщ
Здесь они что-то попутали. В этом заголовке указаны Src IP и номер порта отправителя. Dst IP и порт вытягивать ниоткуда не нужно - это тот IP, который вы прописали в W5100 и номер порта, который прописали в socket перед открытием.
Метценгерштейн
да, точно. Главное, смотрел отправку терминалкой и просмотрел- там действительно IP компа, от куда отправляю
Спасибо.
Метценгерштейн
Цитата(Сергей Борщ @ Aug 26 2014, 20:21) *
номер порта, который прописали в socket перед открытием.

а как прописать так, чтобы все порты слушал? А не только тот, что в сокете перед открытием указан?
Сергей Борщ
Цитата(Метценгерштейн @ Aug 26 2014, 23:16) *
а как прописать так, чтобы все порты слушал?
Никак. Во всяком случае если socket настраивается как UDP. Может быть как-то через MAC Raw mode можно, не изучал.
Метценгерштейн
столкнулся с такой проблемой-

если записать так:
Код
socket(0,Sn_MR_UDP,3000,0);
socket(0,Sn_MR_UDP,3001,0);

то есть, я сначала один порт src указал, а потом его поменял, то программа не работает.
wireshark пишет, что адрес dst не корректен. Т.е. визнет не хочет при двойном открытии сокета записывать src port.
Даже, если принудительно вписать туда номер порта
Код
    temp = (IINCHIP_READ16 (Sn_PORT0(0)));
    IINCHIP_WRITE16 (Sn_PORT0(0), 3001);
    temp = (IINCHIP_READ16 (Sn_PORT0(0)));

и считать его в переменную, то один хрен прога не работает.
в даташите на визнет написано, что запись порта д.б. до включения сокета. Это и сделано, если вызвать ф-ю
Код
socket(0,Sn_MR_UDP,3001,0);

она сначала закрывает сокет, меняет все, открывает заново.
но и так не работает.

из-за чего это может быть?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.