윈도우10 멀티캐스팅시 패킷이 안나가는 경우가 있읍니다.
안녕하세요.
멀티캐스팅을 사용해서 프로그램 짜고 있읍니다.
리눅스등에서는 이런경우가 없었는데, 윈도우10에서는 패킷이 밖으로 안나가는 경유가 있읍니다.
또 완전히 안된다기보단 어떨땐 나가기도 하구요.
코딩은 아래 보시면...
memset(&sin,0,sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = htonl(INADDR_ANY);
// sin.sin_port = htons((short)atoi(UPNP_PORT)); /* 멀티캐스트 port 설정 */
err = bind(send_sock, (LPSOCKADDR)&sin, sizeof(sin) );
if ( err == SOCKET_ERROR )
{
DbgOut("bind error:%d\n",WSAGetLastError());
CloseReport(send_sock,1) ;
// shutdown(send_sock,SD_SEND);
// closesocket(send_sock);
return 0;
}
#if 0
{
struct timeval tv_timeo = { 3, 500000 }; /* 3.5 second */
if( setsockopt( send_sock, SOL_SOCKET, SO_RCVTIMEO,(char*) &tv_timeo, sizeof( tv_timeo ) ) == -1 )
{
DbgOut("Recv Time Out Error\n");
return 0;
}
}
#endif
memset(&multi_addr, 0, sizeof(multi_addr));
multi_addr.sin_family= AF_INET;
multi_addr.sin_addr.s_addr=inet_addr(UPNP_GROUP); /* 멀티캐스트 IP 설정 */
multi_addr.sin_port=htons((short)atoi(UPNP_PORT)); /* 멀티캐스트 port 설정 */
state=setsockopt(send_sock, IPPROTO_IP, IP_MULTICAST_TTL, (char*) &multi_TTL, sizeof(multi_TTL));
if(state)
{
DbgOut("setsockopt() error");
CloseReport(send_sock,1) ;
// close(send_sock);
return 0;
}
hWaits[0]=hStop ;
hWaits[1]=hRead ;
memset(&OverLapTcp,0,sizeof(OVERLAPPED));
for(Cnt=0;Cnt<110;Cnt++)
{
DbgOut("sendto...\n");
wsBuf.buf = SearchStr ;
wsBuf.len = strlen(SearchStr);
Flags = 0 ;
RetVal=WSASendTo(send_sock,&wsBuf,1,&rLen,Flags
...
WSASendTo 함수를 이용해서 보내는데요.
일단 방화벽은 끄고 테스트 중입니다.
WireShark로 패킷 보면 밖으로 전송이 안됩니다.
또 받는쪽에서도 모니터링중인데, 패킷이 도달하지 않습니다.
어째서인지 모르겠네요.
WSASendTo 리턴값은 지극히 정상적입니다.
WSASendTo 리턴값은 지극히 정상적입니다.
0이 리턴되며 rLen은 보낸 바이트수가 리턴됩니다.
댓글 달기