---
title: "W5100 통신 문의"
url: "https://maker.wiznet.io/forum/9461"
markdown_url: "https://maker.wiznet.io/forum/9461/md"
type: "Forum topic"
category: "Ethernet Chips"
author: "YouJeong"
created: "2024-09-10T13:44:14+09:00"
last_activity: "2024-11-25T01:30:13+09:00"
language: "ko"
views: 14
replies: 6
source: "WIZnet Makers forum (https://maker.wiznet.io/forum/)"
---

# W5100 통신 문의

## Question

Asked by YouJeong on 2024-09-10 in Ethernet Chips.

안녕하세요.

28335를 사용하여 W5100제어하고 있는데 해결되지 않은 문제가 있어서 문의를 드립니다.

현재 IP 설정 후 PC와 PING 테스트를 했을 때 정상 동작을 하는 상황인데 PC cmd에서 netstat 명령어로 IP, port를 확인하였을 때 IP는 설정한 값으로 되어있고, Port는 5000으로 설정하였는데 40000번 이후로 되어 있습니다. (처음에는 139번만 연결되다가 pc 설정 변경 후 40000번 이후 임시포트로 연결됨) pc에서 연결하기 위해 보이는 port로 입력하여 연결하면 established 상태로 연결되었다가 timeout이 되는지 끊깁니다.

이때 로컬상태를 확인해보면 수신 패킷은 있는데 송신 패킷은 0으로 표시됩니다.

여러 설정을 바꿔봐도 해결이 되지 않아서 도움을 요청드립니다.

이런 경우 pc의 설정을 다르게 해야할게 있는건가요? 아니면 레지스터 설정에 문제가 있는건가요..? 혹시 해결방법이 있는지 확인 부탁드립니다..

## Replies

### Reply 1 by matthew, 2024-09-10

안녕하세요. 어떤 환경에서 어느 라이브러리를 사용하여 개발 중인지 알 수 있을까요?

### Reply 2 by YouJeong, 2024-09-11 (in reply to reply 1)

안녕하세요.

Code Composer Studio(CCS) IDE 환경에서 컴파일 하고 있고, 코드는 사이트에서 제공하고 있는 예제코드를 환경에 맞게 수정하여 사용하고 있습니다.

<https://github.com/Wiznet/ioLibrary_Driver> 에서 제공하고 있는 ioLibrary Driver에서 W5100에 해당하는 코드를 사용하고 있습니다.

### Reply 3 by lawrence, 2024-09-12 (in reply to reply 1)

안녕하세요 위즈네트 입니다.

작성하신 글로만 보면 W5100 port를 5000으로 설정했지만 실제로는 다른 값으로 설정되었다고 이해하면 될까요?

port register를 읽었을때도 5000번이 아닌 다른값으로 설정되어 있을까요?

Established 상태에서 Close 되었다면 TCP 통신이 이루어진 wireshark packet 캡쳐한 .pcap 파일을 통해 PC와 주고받은 실제 패킷을 확인해볼 수 있을까요?

### Reply 4 by YouJeong, 2024-10-25 (in reply to reply 1)

안녕하세요.

지금 두 가지 상황인 것 같습니다. cmd에서 netstat에서 보면 TCP로 프로토콜이 보이는데 wireshark packet을 통해 보니까 source와 Destination 주소가 변경되고, protocol 또한 tcp로 되어 있지 않습니다. 뭐가 문제인지 찾지 못하고 있습니다... 어떤 부분을 확인해야 할지 조언 부탁 드립니다.

ip: 192.168.1.5, gateway ip: 192.168.1.1, subnet mask: 255.255.255.0, mac address: 00 08 dc 00 00 00,

[캡처1.JPG](https://1drv.ms/i/s!AuBlmIcPBXLgv_5nytZdBp0rQh13LA?e=DyRDEQ)

[캡처2.JPG](https://1drv.ms/i/s!AuBlmIcPBXLgv_5mzedFYwvfr40cwg?e=xc2rfw)

[캡처3.jpg](https://1drv.ms/i/s!AuBlmIcPBXLgv_5loZ8wMNTxKBlA6A?e=wofnwD)

[캡처4.JPG](https://1drv.ms/i/s!AuBlmIcPBXLgv_5rpBQbKulwIkcnAA?e=iw7yO0)

### Reply 5 by limhs727, 2024-11-15 (in reply to reply 1)

안녕하세요. 저도 비슷한 상황이라 혹시 해결하셨을까 해서 남겨봅니다.

cmd에서 netstat에서 보면 TCP로 프로토콜로 확인되는데, wireshark packet으로 확인해보면 port도 변경되고 udp라고 나옵니다...
ip : 192.20.0.233 destination : 224.0.0.251 MDNS 91 Standard query 0x0000 ANY &lt;pc name> dosvc._tcp.local, "QM" question

### Reply 6 by jw456123, 2024-11-25 (in reply to reply 1)

저는 W5500 - Ti F28379D 프로세서를 사용했는데... 비슷한 증상을 겪었고, 해결하여 알려드립니다.
이는 기본적으로 ti CCS의 경우 16bit가 최소 프로그래밍 단위이기 때문에 발생하는 문제입니다.

uint8_t / int8_t 는 uint16_t / int16_t 로 인식됩니다. 8bit 가 16bit로 인식되어도, 앞의 8bit 는 0이기 때문에 일반적으로 문제가 발생하지는 않으나,
포인터 사용 시 문제가 발생합니다.

wiznet library - socket.c 파일의 socket 함수에서

// uint32_t taddr;
// getSIPR((uint8_t*)&taddr);
// if(taddr == 0) return SOCKERR_SOCKINIT;

포인터로 코딩되어 있는 부분을
uint32_t taddr;
uint8_t addr[4];
getSIPR(addr);
taddr = (addr[0] & 0x000000FF);
taddr = (taddr &lt;&lt; 8) + (addr[1] & 0x000000FF);
taddr = (taddr &lt;&lt; 8) + (addr[2] & 0x000000FF);
taddr = (taddr &lt;&lt; 8) + (addr[3] & 0x000000FF);
if(taddr == 0xFFFFFFFF || taddr == 0) return SOCKERR_SOCKINIT;

변경해주었을때 문제가 해결되었습니다.
도움이 되셨으면 좋겠습니다.

* 혹시 이 방법으로 문제가 해결되셨다면, 라이브러리 내에서 다른 함수들에 8bit 포인터가 사용된 부분에서 문제가 생기는지 확인을 부탁드려도 될지요...?
우선 저는 해당 부분만 바꿨을때 제가 원하는 동작을 구현하는데에 문제가 발생하지 않아 추가적으로 라이브러리 검토는 진행하지 않았습니다.

---

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