W550IO 모듈에서 브로드캐스팅 통신 문의


#1

W550IO 모듈과 PC와의 브로드캐스팅 통신을 하는데 있어서
W500IO 모듈에서 수신과 송신은 되는데
PC에서 수신이 되지 않습니다.

다만 Wireshark 프로그램을 실행시키면 양쪽 모두에서 송수신이 원할하게 이루어지지만
Wireshark 프로그램을 종료시키면 PC에서 수신이 되지 않습니다.
(W550IO 모듈은 atmega128과 SPI 통신을 하고 있습니다.)

//////////////////////////////////////////////////////////////////////////////////////////////////
switch(getSn_SR(SOCK_UDPS))
{
case SOCK_UDP:
if((size = getSn_RX_RSR(SOCK_UDPS)) > 0)
{
if(size > NET_RX_LEN)
size = NET_RX_LEN;
ret = recvfrom(SOCK_UDPS, buffer, size, destip, (uint16_t*)&destport);
if(ret <= 0)
{
DebugPrint(“Udp recvfrom error…\r\n”);
return;
}

		size = ret;

		//멀티캐스팅 그룹에 등록하는 절차
		close(SOCK_UDPS);
		delay_ms(10);
		memcpy(mac, gWIZNETINFO.mac, 6);
		mac[3] = gWIZNETINFO.ip[1] & 0x7F; 
		mac[4] = gWIZNETINFO.ip[2]; 
		mac[5] = gWIZNETINFO.ip[3]; 
		setSn_DPORT(SOCK_UDPS, destport); 
		setSn_DIPR(SOCK_UDPS, destip);
		setSn_DHAR(SOCK_UDPS, mac); 
		delay_ms(10);
		ret = socket(SOCK_UDPS, Sn_MR_UDP, UDP_PORT,  SF_MULTI_ENABLE);
		if(ret != SOCK_UDPS)
		{
			DebugPrint("Udp Socket Error..%d\r\n", ret);
			break;
		}
		else
			DebugPrint("Udp Server Start..\r\n");
		////////////////////////////////////////////////////////////

		//set or get network configuration
		ConfigurationData(buffer, size, destip, destport);

		DebugPrint("recvfrom : %d.%d.%d.%d, %ld, %ld, %02X\r\n", destip[0], destip[1], destip[2], destip[3], destport, size, buffer[0]);
		//DebugPrint("====%d\r\n", ret);
	}
	break;
case SOCK_CLOSED:
	ret = socket(SOCK_UDPS, Sn_MR_UDP, UDP_PORT,  SF_MULTI_ENABLE);
	if(ret != SOCK_UDPS)
		DebugPrint("Udp Socket Error..%d\r\n", ret);
	else
		DebugPrint("Udp Server Start..\r\n");
	break;
}

/////////////////////////////////////////////////////////////////////////////////////////////////////
W550IO 모듈 설정이 잘못 된건가요?

답변해 주시면 고맙겠습니다.
감사합니다.


#2

Wireshark is not expected to send any data through the network, thus your suspicion on the Wireshark influencing W5500 receiving/not receiving data should not be correct.

Looking to your code provided it seems you query data received after you reset UDP socket, and of course it will tell you that it did not receive anything as it was just reset.

You must at least put more comments to the sources so that you and we can see what you do and why you do it.


#3

Eugeny 답변에 감사드립니다.

제가 브로드캐스팅 통신을 하는 이유는
W550io 모듈의 ip/gateway/subnetmask/server_ip/server_port 등
PC와의 통신에 필요한 네트워크 환경을 맞춰주고자 하는 것입니다.

소켓 생성한 후에 충분한 시간 지연을 주어도 마찬가지입니다.

이유를 모르겠네요… ㅠㅠ