一个关于广播的问题
代码如下:
SOCKET theSock;
struct sockaddr_in theBroadCastDst;
int on=1;
int lenSend;
if((theSock=socket(AF_INET,SOCK_DGRAM,0))==INVALID_SOCKET)
{
AfxMessageBox("socket() error!");
return;
}
if((setsockopt(theSock,SOL_SOCKET,SO_BROADCAST,(char*)&on,sizeof(int)))==SOCKET_ERROR)
{
AfxMessageBox("setsockopt() error!");
return;
}
if((WSAAsyncSelect(theSock,AfxGetMainWnd()->GetSafeHwnd(),WM_IPEVENT,FD_WRITE|FD_READ|FD_ACCEPT|FD_CONNECT))==SOCKET_ERROR)
{
AfxMessageBox("WSAAsyncSelect() error!");
return;
}
theBroadCastDst.sin_addr.S_un.S_addr=INADDR_BROADCAST;
theBroadCastDst.sin_port=htons(CHATPORT);
lenSend=sendto(theSock,"Broadcasting!",13,0,(struct sockaddr*)&theBroadCastDst,sizeof(sockaddr_in));
if(lenSend==13)
//do something
else
{
lenSend=WSAGetLastError();
return;
}
错误是sendto调用出错,WSAGetLastError() 返回10047,即
使用了与请求的协议不兼容的地址。
请高手指教!