SOCKED ESTABLISHED on TCP server


#1

Hello! please help me with such problem: I have done a TCP server on WIZ 5100 and want now to make it on W5500. I have change the SPI protokole. turn on it but anything work, start to debug the program and see that W5500 never set PIN “SOCK_ESTABLISHED”. ping is work. SOCKED OPEN work, socked listen work also.

P.S Sorry of my bad English. Thankyou


#2

I contineu to debug it and try to read port number register… It is “0” why I don’t know… but SPI work perfect


#3

W5100 and W5500 are very similar in terms of programming.

  1. Check your W5500 SPI protocol implementation;
  2. Which port number you read? If Sn_DP, then it will be zero until connection is established and remote (destination) port number field is populated;
  3. Perform dump of all registers (common and socket) to see if they all are initialized properly;
  4. As you say you made server on W5500, then another side is client connecting to server. What client sends to server and what it receives? Is there Wireshark log available?

Post your findings and register dump here.


#4

Hello! thankyou for your replay. I find the problem. I have initialisate only socket 0. And buffer size of the socket was not enouph for me… Thanyou.

If you please help me with onother problem. I have done a web server on W5100 and it work perfect in LAN connection. But when I open him a door to the wold network (on a router) after few connection server finish unwer on web request. ping works perfect.

I hope you understand me. Sorry of my English


#5

Please write your native language, I guess Russian. It is not clear what you mean when you translate to English.


#6

Приветствую. Спасибо за ответ.

Я делал веб сервер на базе W5100, когда он был подключен к ноутбуку по локальной сети, он работал хорошо. Как только я его подключил к роутеру и дал веб серверу доступ в мировую паутину, он стал отвечать раз 5 - 10, затем никаких откликов (как будто бы W5100 зависла), в этом состоянии W5100 пингуеться и даже мигают диодики будто бы она отправляет что то в сеть. И так она в этом состоянии до тех пор пока не обрезетишь ее.


#7

Трудно сказать определенно, так как не имею понятия, как у вас сделан веб-сервер. Очень похоже на то, что сокет занят каким-то подключением. Броузеры, в частности Хром, очень любит открывать много сокетов, и держать их по несколько минут открытыми без активности. У вас два варианта -

  1. настроить мост, установить на нем Wireshark, подключить к нему устройство, и смотреть, что происходит в сети, определяя какие сокеты открыты;
  2. в определенный момент делать дамп регистров чипа, чтобы определить, в каком состоянии сокеты, и кто куда подключен.

#8

Приветствую Евгений! Все же попрошу у Вас помощи в решении моей проблемы. Обьясните пожалуйста что означает установить на нем Wireshark. По поводу сокетов, я писал программу так что она обрабатывает только нулевой сокет, для моих целей этого в полне достаточно… я перепробовал уже это все с несколькими роутерами и все одно и тоже… как только плата получает доступ мир, то ответить она может лиш один раз, иногда несколько раз…

Прилагаю файл с программой которая обрабатывает сервер. в принципе весь алгоритм в основном цикле, Посмотрите пожалуйста где нарушена моя моя логика, где я не прав. Спасибо


#9

Берете обычный компьютер с Windows или Linux с двумя сетевыми портами (один точно проводной, второй - какой может связаться с роутером), настроить эти пва порта как сетевой мост. В Windows это просто - выбираете потры в панели управления, правая кнопка мыши, и там будет соответствущий пункт, далее установить фиксированный адрес моста. По линуксу подсказать не могу. Потом на этот компьютер устанавливаете Wireshark и запускаете мониторинг по обоим портам. Как только зависло, немного подождать - чтобы было видно, что происходит, и остановить мониторинг, и далее анализировать получившийся лог.

А как с этим пунктом? Сделали дамп регистров? Что в них после того, как зависает?


#10

У мент такой возможности подключения устройства что я пытаюсь сделать. Подключено всё таким образом - в роутер входит основной кабель а из него один кабель в компьютер, другой в устройство. в Роутере проброшен порт что б связаться с утройством из внешнего мира.

Замечено было что устройство. полее долго работает когда все обращения идут из внутренней сети (хотя это утверждение вызывает вопросы.) Дамп регистров не делал (подскажите какие именно нужно сделать.) Но путем внутресхемной отладки обнаружил что программы не получает флаг “SOCK_ESTABLISHED”

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


#11

Это надо делать в вашей программе. Есть процедуры/функции, которые читают регистры чипа. Например, вы программируете событие по нажатию какой-нибудь кнопки, и когда происходит проблема - вы нажимаете кнопку и специальная подрограмма выводит значения всех регистров из блоков common и socket куда-нибудь в отладочное соединение.

Кто не получает - W5100 или удаленный компьютер?

Вот между роутером и W5100 и надо вставить мост, который бы логировал все, что идет в обе стороны.


#12

Приветствую, попробовал сделать дамп регистров как вы говорили, считал регистры COMMON (MR)=1; все сокет регистры были равны = 0 (Sn_MR, Sn_CR, Sn_SR)
Из этого сделал вывод, что какой то таймаут закрыл сокет в то время когда я ожидал флаг SOCK_ESTABLISHED. Что я должен делать если обнаружил,что сокет закрылся когда я ожидаю данный флаг?

По поводу вопроса кто не получает флаг SOCK_ESTABLISHED - Да это не получает W5100

У Вас есть Skype ?


#13

Здравствуйте, я смог заставить работать плату в течении нескольких суток однако теперь одна иногда перестает отвечать даже на пинг запросы. Это с чем может быть связано, подскажите пожалуйста хоть в какую сторону смотреть?