---
title: "W5100 루프백 테스트시 무한 send현상"
url: "https://maker.wiznet.io/forum/10318"
markdown_url: "https://maker.wiznet.io/forum/10318/md"
type: "Forum topic"
category: "Ethernet Chips"
author: "heeyeop"
created: "2014-06-18T12:21:11+09:00"
last_activity: "2017-05-04T08:33:19+09:00"
language: "ko"
views: 1527
replies: 3
source: "WIZnet Makers forum (https://maker.wiznet.io/forum/)"
---

# W5100 루프백 테스트시 무한 send현상

## Question

Asked by heeyeop on 2014-06-18 in Ethernet Chips.

안녕하세요
W5100을 사용하여 제품개발중 문의점이 발생하여 질문드립니다.

기본 폼은 w5100 driver를 적용[data type 변형(UCHAR → unsigned char) 및 함수name만 변경사용중]하여 사용하고 있는데 실제 socket open 및 connect하는 함수의 일부분 첨부 드립니다.
.
.
.
switch(W5100_Sn_state_get(0))
{
case SOCKET_STATE_sock_closed: // socket_open
if( !(socket_open(0, SOCKET_MODE_tcp,MASTER_SYSTEM_SETTING_master_comm_port_num, 0x20)) )
{

```
        }
        else
        {
            connect(0, socket[0].destination_IP_add, MASTER_SYSTEM_SETTING_master_comm_port_num); 
            //litsen(0);
        }
    break;
        
    case SOCKET_STATE_sock_established:     // connect
```

#ifdef DEBUG_MODE
sprintf(uart3.tx_data,“length get recieved size [%d]byte\r\n”, W5100_Sn_rx_data_size_get(0));
uart3.tx_len = strlen(uart3.tx_data);
uart_tx_start(uart3.tx_data,uart3.tx_len);
#endif
if( (len = W5100_Sn_rx_data_size_get(0)) > 0)
{
if(len > 1024) len = 1024;
len = recv(0,spi.rx_data, len);
#ifdef DEBUG_MODE
sprintf(uart3.tx_data,“recieved size [%d]byte\r\n”, len);
uart3.tx_len = strlen(uart3.tx_data);
uart_tx_start(uart3.tx_data,uart3.tx_len);
#endif
send(0, spi.rx_data,len);
.
.
.

위와 같이 현재 socket상태를 확인하여 닫혀 있는경우 해당 socket을 open후 PC[하이퍼터미널]로 connect요청을 합니다.
그런데 해당 socket을 connect할 경우 [client Mode] established 단계에서 PC쪽에서 임의의 data를 전송하면 해당 data를 연속해서 계속 send하고
해당 socket을 litsen할 경우 [server mode] established 단계에서 PC쪽에서 임의의 data를 전송하면 해당 data를 원하는대로 loopback합니다.

connect 및 listen 시 연결시작요청하는 주체만 다를뿐 양쪽에서 socket이 open되면 이후 처리되는 routine은 동일한것 아닌가요?

wireshark 캡쳐 화면 첨부드립니다.

[![](https://maker.wiznet.io/forum_uploads/wiznet/original/1X/5964e28b446dc0d3e4fc8d73cce41bddc14ec9e6.JPG) 1444×904 259 KB](https://maker.wiznet.io/forum_uploads/wiznet/original/1X/5964e28b446dc0d3e4fc8d73cce41bddc14ec9e6.JPG)

## Replies

### Reply 1 by heeyeop, 2014-06-19

우선 답변 감사합니다.

code상에서는 established 부터의 code는 모두 같은 routine을 사용하고 있습니다.

connect일때와 listen일때의 capture file 첨부해 드리오니 확인부탁드립니다.

또한 target 정보는 192.168.0.50이며 PC정보는 192.168.0.30입니다.
[바탕 화면.zip](https://maker.wiznet.io/forum/legacyFile.asp?path=8Onfm4xtAAI9610yHh5NcX5DDfA.zip) (40.5 KB)

### Reply 2 by heeyeop, 2014-06-23

server모드 일경우에는 PC-> Target B/D 로 1byte전송 시 1byte만 전송되는데
cilent모드 일 경우에는 PC-> Target B/D 로 1btye전송 시 같은문자로 이루어진 1byte문자가 게속해서 전송하네요.

[malformed packet]이란 에러와 함께말이죠.

cennect시 파일의 959번째 packet부터 입니다.

### Reply 3 by heeyeop, 2014-07-01

다시 정리하면
client => W5100
sever => Windows xp에서 제공하는 기본 하이퍼터미널프로그램

연결상태까지는 정상적으로 동작합니다.

그러나 loopback test시[PC->W5100->PC]( 받은데이터 그대로 다시 전달) 하는 과정에서
하이퍼터미널프로그램상에 1byte만 전송해도 w5100에서 받은 1byte를 계속 다시 보내는것 같습니다.

새로 capture한 파일 첨부드립니다.
packet상의 1455번째 패킷부터 시작이며,
PC&lt;->W5100과의 packet filter는 "filter"버튼으로 sort 시켜서 보시면 될것같습니다.

감사합니다.
[connect시2.zip](https://maker.wiznet.io/forum/legacyFile.asp?path=gGTU9V9anIsm7au9XWV3x2f1wP5.zip) (58.3 KB)

---

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