---
title: "[W5500] SOCK_CLOSED 관련 문의 드립니다."
url: "https://maker.wiznet.io/forum/12924"
markdown_url: "https://maker.wiznet.io/forum/12924/md"
type: "Forum topic"
category: "Ethernet Chips"
author: "aryunmir"
created: "2018-05-30T01:15:11+09:00"
last_activity: "2018-05-30T02:18:22+09:00"
language: "ko"
views: 862
replies: 1
source: "WIZnet Makers forum (https://maker.wiznet.io/forum/)"
---

# [W5500] SOCK_CLOSED 관련 문의 드립니다.

## Question

Asked by aryunmir on 2018-05-30 in Ethernet Chips.

안녕하세요.
W5500을 이용한 전력관리 장비를 제작하여 납품 중인 개발자입니다.

해당 제품을 개발하여 올해 초 부터 양산 및 설치를 진행하고 있습니다.
설치 된 제품 중 소수의 제품에서 예상치 못한 오동작이 발생하여 문의를 드립니다.

오동작 현상은
약 **12시간 주기로 30분간** 서버로의 데이터 전송이 누락되는 현상으로,
이더넷 접속이 끊겨 발생하는 것으로 추정 됩니다.

해당 현장에 PING 테스트 장비를 추가로 설치하여 HUB 쪽 문제인지 실험을 해보았지만
HUB와의 PING 테스트에는 문제가 발견되지 않았습니다.

이와 같은 현상이 발생하는 원인으로 추측하고 있는 것은
이더넷 통신 도중 어떠한 문제 또는 원인으로 소켓이 끊어졌고,
SOCK_CLOSED 상태로 가던 도중 문제가 발생한 것이 아닌가 싶습니다.

SOCK_CLOSED로 변화하기 위해서는
SOCK_FIN_WAIT, SOCK_CLOSING, SOCK_TIME_WAIT 3가지 상태 중
1가지를 거쳐야 하는 것으로 알고있습니다.

여기서 문의 드리고 싶은 것은

1. 기본 설정의
   SOCK_FIN_WAIT or SOCK_CLOSING or SOCK_TIME_WAIT 상태에서
   SOCK_CLOSED 상태로 변화 하기까지 소요되는시간(Time out)과

2. 해당 상태에서 인위적으로 SOCK_CLOSED 또는 SOCK_INIT 상태로 바꿀수 있는지

3. 제가 추측하고 있는 원인 외에 추정되는 원인이 있으신지

입니다.

감사합니다.

## Replies

### Reply 1 by Edward, 2018-05-30

안녕하세요.

정확한 오동작 발생 포인트를 알지 못하기 때문에 추정되는 원인을 잘 모르겠습니다…
정말 소켓이 CLOSE가 제대로 안된 것인지, 다른 무한루프에 빠져있는 것인지 정확한 문제 파악이 필요해 보입니다.

우선 요청하신 문의에 답을 드리자면,

저희가 제공드리는 ioLibrary 내부의 socket.c 함수를 참고하시면 close, disconnect함수가 있습니다.
이 함수 내부에 Sn_IR_TIMEOUT이 세팅되어 있기 때문에 이 값을 참고하시면 됩니다.

그리고 저희 W5500칩은 칩 내부적으로 Command 동작이 이루어져야 소켓 상태가 변경됩니다.
Sn_CR 레지스터를 이용하여 세팅을 하면 칩은 그걸 받아들여 최종적으로 세팅을 하게 됩니다.
그래서 인위적으로 SOCK_CLOSED(Socket open)상태로 가기 위해서는 반드시 socket을 강제적으로 종료하시는 방법을 사용하셔서(close,diconnet함수) 다시 Socket open형태로 가셔야 Socket listen(SOCK_INIT)으로 넘어갈 수 있습니다.

감사합니다.

---

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