---
title: "SOCKED ESTABLISHED on TCP server"
url: "https://maker.wiznet.io/forum/12728"
markdown_url: "https://maker.wiznet.io/forum/12728/md"
type: "Forum topic"
category: "IO Modules"
author: "vitec"
created: "2018-02-06T12:45:48+09:00"
last_activity: "2018-03-19T13:16:54+09:00"
language: "en"
views: 1807
replies: 12
source: "WIZnet Makers forum (https://maker.wiznet.io/forum/)"
---

# SOCKED ESTABLISHED on TCP server

## Question

Asked by vitec on 2018-02-06 in IO Modules.

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

## Replies

### Reply 1 by vitec, 2018-02-06

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

### Reply 2 by Eugeny, 2018-02-08 (in reply to reply 1)

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.

### Reply 3 by vitec, 2018-02-13

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

### Reply 4 by Eugeny, 2018-02-13

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

### Reply 5 by vitec, 2018-02-13

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

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

### Reply 6 by Eugeny, 2018-02-13

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

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

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

### Reply 7 by vitec, 2018-03-04

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

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

### Reply 8 by Eugeny, 2018-03-04

![](https://avatars.discourse-cdn.com/v4/letter/v/8dc957/48.png) vitec:

> Обьясните пожалуйста что означает установить на нем Wireshark.

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

Eugeny:

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

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

### Reply 9 by vitec, 2018-03-05

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

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

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

### Reply 10 by Eugeny, 2018-03-05

![](https://avatars.discourse-cdn.com/v4/letter/v/8dc957/48.png) vitec:

> Дамп регистров не делал (подскажите какие именно нужно сделать.)

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

![](https://avatars.discourse-cdn.com/v4/letter/v/8dc957/48.png) vitec:

> Но путем внутресхемной отладки обнаружил что программы не получает флаг “SOCK_ESTABLISHED”

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

![](https://avatars.discourse-cdn.com/v4/letter/v/8dc957/48.png) vitec:

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

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

### Reply 11 by vitec, 2018-03-06

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

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

У Вас есть Skype ?

### Reply 12 by vitec, 2018-03-19

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

---

Source: https://maker.wiznet.io/forum/12728
