Перейти к содержанию
    

в даташите такая картинка

http://c2n.me/iNFnYP

т.е. принял модуль данные по UDP, выдал мне их как на картинке. А на самом деле есть еще и src IP, а он только dst показывает. Wireshark показывает целиком пакет, а W5100 выхватывает из него части и показывает их мне.

Нельзя ли как-то в W5100 получить в том числе и src IP при приеме пакета?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здесь они что-то попутали. В этом заголовке указаны Src IP и номер порта отправителя. Dst IP и порт вытягивать ниоткуда не нужно - это тот IP, который вы прописали в W5100 и номер порта, который прописали в socket перед открытием.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

да, точно. Главное, смотрел отправку терминалкой и просмотрел- там действительно IP компа, от куда отправляю

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

номер порта, который прописали в socket перед открытием.

а как прописать так, чтобы все порты слушал? А не только тот, что в сокете перед открытием указан?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а как прописать так, чтобы все порты слушал?
Никак. Во всяком случае если 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);

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

но и так не работает.

 

из-за чего это может быть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...