---
title: "wiznet 5500 connect() SOCK_BUSY problem . Why ??"
url: "https://maker.wiznet.io/forum/13752"
markdown_url: "https://maker.wiznet.io/forum/13752/md"
type: "Forum topic"
category: "Ethernet Chips"
author: "alperen erdogan"
created: "2020-03-21T11:55:37+09:00"
last_activity: "2023-11-16T14:38:11+09:00"
language: "en"
views: 1100
replies: 5
source: "WIZnet Makers forum (https://maker.wiznet.io/forum/)"
---

# wiznet 5500 connect() SOCK_BUSY problem . Why ??

## Question

Asked by alperen erdogan on 2020-03-21 in Ethernet Chips.

uint8_t s = 0 ;//socket numarası
uint8_t server_ip[4] = {192,168,2,192} ; // Oluşturulan server’ın ip’si gösterilir
uint8_t Baglan ; //Connect fonkişyonundan dönen değeri tutmak için kullanacağız .
uint16_t port_num = 5656 ;

socket(0 , Sn_MR_TCP, port_num , 0) ; // SocketNumber,Protocol,Port,Flag
//Sn_MR_TCP—> This configures the protocol mode of Socket
//5656 —> Oluşturulan serverdaki port numarası
//Flag default olarak kullanılıyor .Sebebini öğren ??

while (Baglan != SOCK_OK) // Return “SOCK_OK” olana kadar bağlanmaya dener cihaz servera
{
Baglan = connect(s, server_ip, port_num); // SocketNumber,ServerIp,Port
//Server_ip —> Oluşturduğumuz serverdaki ip adresi
//Port —> Oluşturduğumuz serverdaki port numarası
}

Baglan = 0 ; // Bağlantı kurulduktan sonra birdahaki işlem için “Baglan” degeri resetlenir .

im using this code . But connect()'s return value is SOCK_BUSY . its not SOCK_OK . **Why is the happening .**

## Replies

### Reply 1 by becky, 2020-03-23

Please check the return value of socket().
This error does not occur if the socket is opened normally.

### Reply 2 by alperen erdogan, 2020-03-23 (in reply to reply 1)

Thank you for answer

i checked socket . İts returned socket num . its working normally . now connect’s return value is -3 in decimal form . its mean is SOCKERR_SOCKINIT . its mean is " Socket is not initialized or SIPR is Zero IP address when Sn_MR_TCP . " what does is mean ? im usign stm32f303-re . İm tring tcp client with w5500 . **İ cant find enough resources** . I’ll be happy if you can help me .

im using this code :

void cs_sel() {
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_10, GPIO_PIN_RESET); //CS LOW
}

void cs_desel() {
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_10, GPIO_PIN_SET); //CS HIGH
}

uint8_t spi_rb(void) {
uint8_t rbuf;
HAL_SPI_Receive(&hspi3, &rbuf, 1, 0xFFFFFFFF);
return rbuf;
}

void spi_wb(uint8_t b) {
HAL_SPI_Transmit(&hspi3, &b, 1, 0xFFFFFFFF);
}
/* ----------------------------------------------*/

uint8_t bufSize = {2, 2, 2, 2};

/* ----------------------------------------------*/

reg_wizchip_cs_cbfunc(cs_sel, cs_desel);
reg_wizchip_spi_cbfunc(spi_rb, spi_wb);

/* ----------------------------------------------*/

wizchip_init(bufSize, bufSize);
wiz_NetInfo netInfo = { .mac = {0x00, 0x08, 0xdc, 0xab, 0xcd, 0xef}, // Mac address
.ip = {192, 168, 2, 2}, // IP address
.sn = {255, 255, 255, 0}, // Subnet mask
.gw = {192, 168, 2, 1}}; // Gateway address
wizchip_setnetinfo(&netInfo);
uint8_t s ;
s = 1 ;
uint8_t server_ip[4] = {192,168,2,1} ;
uint8_t Baglan ;
int32_t ret=2 ; // check socket value

/* ----------------------------------------------*/
ret = socket(s,Sn_MR_TCP,5656,SF_TCP_NODELAY);

```
  while(Baglan != SOCK_OK)
  {
	  Baglan = connect(s,server_ip,3000);

  }
  Baglan = 0 ;
```

}

### Reply 3 by becky, 2020-03-23

The w5500 has 8 sockets.

alperen_erdogan:

> uint8_t bufSize = {2, 2, 2, 2};

Change this to uint8_t bufSize={2,2,2,2,2,2,2,2};

### Reply 4 by alperen erdogan, 2020-03-24

Thank you for answer but i tried but not working again . ithink problem is not in socket . Because i updated code and work correctly. this section .

if (Sn_SR(0) != SOCK_INIT) // The socket initialization query completes.
{
ret = socket(s,Sn_MR_TCP,5656,SF_TCP_NODELAY);
}

im using stm32cubeide . İ found problem in connect() fuction .
uint8_t s ;
s = 0 ;
uint8_t server_ip[4] = {192,168,1,5} ; // This should be in my pc .
uint8_t Baglan ;
do
{
Baglan = connect(s,server_ip,5656);

```
  }while(Baglan != SOCK_OK);
  Baglan = 0 ;
```

code stays inside the while loop and Baglan cant SOCK_OK . I couldn’t find the reason for this .

and after i tried differntly connection like this :

```
       setSn_DIPR(s, server_ip); //set server_ip
   HAL_Delay(500);
   setSn_DPORT(s, 5656) //set port number
   HAL_Delay(500);
   setSn_CR(s,Sn_CR_CONNECT); //set sn_sr_connect
   HAL_Delay(1000);
```

and i tried connect to hercule’s tcp server . but its not worked .

At another point, I started to think I was making a mistake.

im using hercules and wireshark . this is the screenshots I see when I run the code .

[![forum1](https://maker.wiznet.io/forum_uploads/wiznet/original/2X/2/29fa0d0a739773c058908413e06fbac8b0593e63.jpeg) forum1623×540 40.6 KB](https://maker.wiznet.io/forum_uploads/wiznet/original/2X/2/29fa0d0a739773c058908413e06fbac8b0593e63.jpeg)

[![forum2](https://maker.wiznet.io/forum_uploads/wiznet/original/2X/b/b7b82a69fa5f7b14fd82585223bb9ba418393c1c.jpeg) forum21920×621 135 KB](https://maker.wiznet.io/forum_uploads/wiznet/original/2X/b/b7b82a69fa5f7b14fd82585223bb9ba418393c1c.jpeg)

İ used first time this apps . I think the connect function works according to the application. But I can not understand why I could not establish a connection with the server in the other application.

### Reply 5 by Ali Osman AYDIN, 2023-11-16

Add “HAL_Delay(1000)” after “wizchip_setnetinfo(&netInfo)”

---

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