W5300 관련 질문

W5300과 28346 MCU를 연결하려고 합니다. 일단 W5300을 서버로 Listen을 동작시키고 다른 Client에서의 접속후 통신은 정상적으로
연결을 하였습니다. 그런데 W5300을 서버가 아닌 Client로 동작시키고 서버에 연결하면 정상 동작이 되질 않습니다.

Server mode로 동작을 하였기 때문에 하드웨어는 문제가 없을 것으로 판단이 되는데 Client로 동작을 시키면 Sn_DHAR: 18: 67: B0: DC: 52: E6과 Sn_DIPR = 192.168.1.2, Sn_DPOR = 5001로 정상 입력후 Connect를 하였는데 Sn_SSR(1)에 0x101 (SOCK ARP)이 리턴되면서 Sock이 닫히는듯 합니다. 정상적이라면 0x117이 되어야 할 것으로 판단이 되는데요. 정상적으로 Destination ip와 port를 입력했음에도 정상적으로 동작을 못하네요. 제가 미스한 부분이 뭐가 있을까요? 조언 부탁드립니다.

PC측이 192.168.1.2 5300측이 192.168.1.201로 설정하였고… 2번에서 201번으로 ping을 하면 reply가 잘됩니다. 왜 201번에서 2번으로 접속이 안되는걸까요? Server의 상태와 상관없이 W5300이 Client로 동작된다면 Sn_SSR에 Establish가 되어야 하는거 아닌지요?

아래 다른분들이 질문한 내용을 보아하니 W5300으로 Client로 동작시킬 때 저와 같은 문제가 있었던분이 계시네요… Clinet port를 증가시킨다는
의미가 무엇인가요?? Destination port는 설정 후 …소스를 보니 Client 포트를 변경하면서 소켓을 생성하는 부분이 있던데요. 인터럽트를 사용할 경우
그렇다면 Sn_IR 인터럽트 비트에서 해당 소켓에 대한 인터럽트가 걸린다며 그때 소켓 포트를 변경하면서 다시 생성해야 하는건지요?

제가 이해를 못하는건지도 모르겠으나 저는 예제의 경우와 다르게 Interrupt 방식을 이용해서 Recv/Send를 하고 있습니다. 구조는

시스템 Mac, IP, Subnet, Gateway, 인터럽트 초기화 → 소켓 설정… TCP 모드, Port 설정, 포트 오픈 , Destination 포트 설정, Destination IP, Mac 설정, TCP Clinet Socket Connect , 인터럽트 Sn_IR설정 , IMR 설정 → 인터럽트 확인 (Recv, Connect, Timeout, Disconnect 에서 데이터 처리… 이런 루틴으로 처리하고 있습니다.
예제처럼 시간마타 Polling으로 처리하고 있질 않아서 어느 파트에서 소켓 포트를 증가시키면서 재 생성
해야 하는지요…?

인터럽트에서 port가 닫힐때 포트를 증가시키면서 재 생성해서 Connecting을 수행하는데도 여전히 Server로 부터 응답이 없습니다. 답변 부탁드립니다.



src 포트를 증가 시켜야 한다는 말씀은 이제 이해가 좀 되네요… 하지만 최초 Socket을 Connect하면 포트 증가하고는 별도로 … Socket이 Establish 상태로 넘어 가야 할듯한데요… 이부분이 0x01 로 계속 머무는게 문제인듯 합니다. 아무리 보아도 Destination port와 IP를 정확히 넣어주었는데 말입니다.
조언 부탁드립니다.

스스로 해결했습니다. 항상 답변 감사합니다. 문제는 방화벽이었습니다. 소스 코드 문제인지 쥐 잡듯이 뒤졌는데 아무런 문제가 발견되지 않아
무엇인가를 얻을 수 있을까 질문을 드린 것이었는데… 방화벽에서 해당 포트를 막아버린듯 합니다. 별건 아니지만 또 하나를 배워가네요. Clinet/ Server 모두 잘 동작하네요. 감사합니다. 수고하세요.