w5300과 서버pc와의 연결 : 크로스 케이블 연결
서버프로그램 : Loopback Test Program
서버 프로그램 port : 3000
서버 pc ip : 192.168.0.1
W5300 ip : 192.168.0.100
위와 같은 조건에서
socket(s,Sn_MR_TCP,any_port++,mode); 동작후에는 Sn_MR=0x0001,Sn_PORTR=0x0421(1057),Sn_SSR=0013 상태가 되고
w5300에서 서버로의 connect 동작시에 Sn_IR_TIMEOUT이 발생 합니다.
이값은 계속 변경이 되어야만 서버에서 접속을 받아 줍니다.
이값이 reset마다 동일한 값을 갖는다면 서버에서는 접속을 받아 주지 않습니다.
이는 이전 접속가 서버에 여전히 남아 있기 때문입니다. 이 정보는 아주 오래 가지 때문에 any_port 값은 매번 새로운 값으로 변경하셔야 합니다.
W5300은 Auto MDI/MDIX를 지원합니다. 즉 다이렉트케이블 및 크로스케이블을 자동으로 판단하여 사용할 수 있습니다.
단순 케이블 문제로만 판단하기는 무리가 있어 보입니다. 물론 케이블은 라인색별로 특성이 다릅니다. 잘못 만들어진 케이블에서는 오동작 할 수 있습니다.
하지만 패킷캡쳐를 분석해보면 서버가 응답을 아예 주지 않는 걸로 보입니다.
이런 경우는 이전에 설명드린 것 처럼 클라이언트의 로컬포트는 이전에 사용한 값을 그대로 사용하는 경우 대부분 발생합니다.
서버를 다시 재부팅 후 접속을 시도하면 접속이 잘될 것으로 판단되나, 테스트시 계속 값을 증가 시켜도, 클라이언트를 리셋을 해도 증가를 시작하는 값이 다시 리셋되어 이전에 접속 시도한 포트 넘버를 다시 사용될 가능성이 높습니다.
따라서, 증가된 값을 미리 비휘발성 메모리에 저장해두고 이를 이용하여 증가시킨 포트 넘버를 사용한다면 서버와의 접속에 있어 문제의 소지를 줄일 수 있습니다.