안녕하세요 W5500io로 TCP 테스트는 loopback.c파일에 있는 loopback_tcps, loopback_tcpc를
활용하여 서버 /클라이언트에 대한 테스트는 마쳤습니다.
udp테스트를 하려고 loopback_udps를 아래와 같이 구현하여 테스트 진행 시…
wiz_NetInfo gWIZNETINFO = { { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66 }, // Mac address
{ 192, 168, 1, 130 }, // IP address
{ 255, 255, 255, 0 }, // Subnet mask
{ 192, 168, 1, 1 }, // Gateway
{ 8, 8, 8, 8 }, // DNS Server
};
uint8_t des_ip[4] = { 192, 168, 1, 123 }; //TCP IP PC Server IP
#define PORT_TCPS 5000
#define PORT_UDPS 3000
#define SOCK_TCPS 0
#define SOCK_UDPS 1
#define DATA_BUF_SIZE 2048
uint8_t gdata[DATA_BUF_SIZE];
main()
{
for(;
{
loopback_udps(SOCK_UDPS, gdata, PORT_UDPS);
}
}
=> 이 코드를 돌리면 Hercules를 사용했을 때 udp의 loopback이 정상적으로 되질 않습니다.
Herclues에서 데이터 Send 했을때 SocketError가 발생 됩니다.
![image|579x500](upload://zcv0hZnnvLWOM6OBf8nc7AqeKXP.png)
그래서 Debug를 해보니 아래와 같이 printf가 되며,,
1:UDP loopback start
1:Opened, UDP loopback, port [3000]
switch(getSn_SR(sn)) => 이 부분에서 SOCK_UDP까지 상태를 받아오나
if((size = getSn_RX_RSR(sn)) > 0) => 여기에서 계속 데이터가 0이 리턴 됩니다.
제대로 연결이 안된 것 같은데, 어떤 문제 인지 알 수 있을까요??
아 그리고 Herclues에 보면 Port와 Local Port로 두개로 되어있는데
Port의 경우 loopback_udps의 매개변수로 주면 되는것 같은데
Local_Port는 프로그램 어디 부분에서 서로 맞춰줘야 하나요??
Herclues 세팅 : Port 3000, Local 4023
W5500 세팅 : Port 3000, Local : ??
그리고 UDP는 서버밖에 없나요? Hercules도 Listen버튼이 있고 api함수도 서버인듯 해보여서,,
혹시 한쪽을 클라이언트로 접속해야 하는 것인지.. 이것도 잘 모르겠네요..
답변 부탁 드리겠습니다. 감사합니다.