W5500 클라이언트 모드 관련 문의 드립니다

#1

안녕하세요

W5500를 서버로 동작 시켜서는 PC를 클라이언트로 구성하여 서로 접속이 잘되는 것을 확인하였습니다.

반대로 W5500을 클라이언트 모드로 사용하여 PC로 접속하려 하는데 소켓을 OPEN하여 상태가

SOCK_INIT일때 Dst IP, Dst Port를 설정 후 Connenct 함수를 사용하여 서버 모드로 설정한 PC로 접속을

하려하는데 접속이 되지를 않네요

와이어 샤크로 패킷을 캡쳐해보니 W5500에서 SYN Packet을 송신하지를 않습니다.

Phy의 링크 상태가 On 인것도 확인하였고 서버로는 잘 동작이 되니 초기화에 문제는 없는 것 같은데

혹시 클라이언트로 동작하기 위해서는 따로 어떤 설정을 해주어야하는지 궁금합니다.

또 라이브러리의 Connnect 함수안에 SetSn_DIPR(sn, addr) 이용하여 IP 주소를 설정한 다음 getSn_DIPR

함수를 이용하여 설정된 목적지 IP 주소를 읽어보면 0.0.0.0 으로 설정된 상태에서 setSn_CR(sn,

CR_CONNECT) 함수가 한번 동작되어 타임아웃 에러가 발생하고 그 다음부터 목적지 주소가 제가 원하

는 주소로 설정되어 읽어지는데 지금 제가 겪고있는 증상과 관련이 있는지 궁금합니다.

답변 부탁 드립니다.

#2

추가로 확인해보니 setSn_CR(sn, CR_CONNECT) 함수를 사용하여 CONNECT 명령을 수행한 후 상태 레

지스터를 읽어 보니 계속 SOCK_INIT(0x13) 에 머물다 타임아웃이 발생하네요 매뉴얼 대로 라면

SOCK_SYNSENT(0x15) 상태로 변경되어야 할 듯 한데 SOCK_INIT 상태로만 유지 되는 듯 합니다.

혹시 지금 같은 문제가 발생하는 조건이 있는지 궁금합니다.

#3

안녕하세요,

TCP Client로 동작시, return 값은 Timeout으로만 나는것인지, 다른 에러메시지가 있었는지…

Syn packet의 경우 socket을 open 한상태에서 setSn_CR(sn,Sn_CR_CONNECT)의 경우 나가게 되는 패킷이며, 해당 명령을 줬을 경우에무조건 나가게 됩니다.
해당 명령을 줬음에서 Wireshark에서 보이지 않는다면,
Destination IP가 PC가 아닐경우 보이지 않을 수 있습니다.

TCP Client일때 패킷캡처한 파일(*.pcap)과 connect 하는 부분의 소스를 첨부해주시면 문제해결에 빠를것 같습니다.
감사합니다.
irina