[W5500] EVB 보드로 연습중인데 UDP 통신해보고 싶습니다.

TCP통신은 성공해서 알겠는데

UDP통신은 이해가 잘안되네요…

TCP와달리 보낼때마다 포트주소랑 IP주소랑 보낸다는건 알겠는데

UDP는 서버,클라이언트 개념이 없는건가요?

socket 함수로 UDP 설정하면 상태레지스터가 UDP 로만 빠지더라고요

그 상태에서 W5500 칩에서 sendto 함수로 PC로 보내려하면 꼭 칩이 먹통이됩니다…

Hercules 프로그램을 사용해서 확인하려는데 어떻게하면 되나요?

안녕하세요

TCP는 접속이 이루어진 target과 1:1 통신만 가능한 반면에
UDP는 매번 다른 target과 송수신이 가능합니다.
Hercules에도 UDP 통신이 있습니다. udp로 포트 open하시고 5500에서 해당 port로 데이터 전송하시면 됩니다.

정상적으로 초기화하고 이렇게 프로그래밍할때 문제가 있을까요?
Hercules에는 UDP 탭에서 모듈IP 192.168.1.43 ,포트 5000, 로컬 포트 5500
해놓고 리슨 눌러놓은 상태에서요

wiz_NetInfo gWIZNETINFO = { .mac = {0x30, 0x28, 0x6c, 0xa6, 0xad, 0xaf},
.ip = {192, 168, 1, 2},
.sn = {255, 255, 255, 0},
.gw = {192, 168, 1, 254},
.dns = {203, 248, 252, 2},
.dhcp = NETINFO_STATIC };

int main (void)
{
uint8_t ipwnth[4]={192,168,1,43};
uint8_t sw2_key[12]={83,87,73,84,67,72,80,85,83,72,13,10};

socket(0, Sn_MR_UDP, 5000, 0);

while(1)
{
	if(Check_Buttons_Pressed() == BUTTONS_BUTTON1)
	{
		sendto(0, sw2_key,12,ipwnth,5000);
	}
  }

}

hercules에서 localport를 5500으로 하셨으면
sendto에서 포트 5500으로 적으셔야 합니다.

모듈IP는 어떤 IP를 얘기하는건가요??
내 PC의 IP? W5500칩에 저장한 IP?

그리고 sendto 함수 인자중의 ip는 내 PC의 IP로 해야하나요?

hercules에서의 UDP SETUP탭의 find 기능은 무엇인가요
UDP 하려면 무언가 검색이 되야 하는건가요? …

아침부터 도움주셔서 감사합니다…
관련 너무 지식이 없어서 죄송하네요…ㅜㅜ

안녕하세요

우선 W5500에서
맨처음에
W5500의 네트워크 정보인 ip, mac, subnet, gateway 등등을 설정합니다.
port의 경우에는 socket별로 다르게 설정이 가능하기때문에 socket()함수에서 port를 지정합니다.
sendto에서는 오로지 destination(현재경우PC)값을 입력하시면 됩니다.

따라서 위의경우 PC IP로 지정해야되는것이 맞습니다

저도 이부분은 사용을 안해서 모르겠습니다만
Required parameters에서 해당 정보들을 입력하고 Find devices를 누르면 해당하는 device가 있는지 찾는것 같습니다

UDP 통신을 하려는 것이시면 UDP Setup 탭 말고 UDP탭에서 Listen하시면 됩니다.

아… 답변 보자마자 깨달았습니다. 감사합니다
port와 local port 이제야 알겠네요