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

안녕하세요

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) 함수가 한번 동작되어 타임아웃 에러가 발생하고 그 다음부터 목적지 주소가 제가 원하

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

답변 부탁 드립니다.

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

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

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

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

안녕하세요,

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

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

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