诸位帮忙看看这段代码有什么毛病?
接受端:
{
struct sockaddr_in addr;
SOCKET s;
s=socket(AF_INET,SOCK_DGRAM,0);
memset(&addr,0,sizeof(addr));
addr.sin_family=AF_INET;
addr.sin_port=htons(8000);
addr.sin_addr.s_addr=htonl(INADDR_ANY);
bind(s,(SOCKADDR*)&addr,sizeof(addr));
HWND hWnd=AfxGetMainWnd()->GetSafeHwnd();
WSAAsyncSelect(s,hWnd,UM_SOCK,FD_READ|FD_WRITE);
}
bind和wsaasyncselect的返回值都没错。
发送端:
{
SOCKADDR_IN addrTo;
SOCKET s;
s=socket(AF_INET,SOCK_DGRAM,0);
HWND hWnd=AfxGetMainWnd()->GetSafeHwnd();
WSAAsyncSelect(s,hWnd,UM_SOCK,FD_READ|FD_WRITE);
char sBuf[1024];
sprintf(sBuf,"hello!");
memset(&addrTo,0,sizeof(addrTo));
addrTo.sin_family=AF_INET;
addrTo.sin_port=htons(8000);
addr.sin_addr.s_addr=inet_addr("202.112.145.73");
int ret=sendto(s,sBuf,6,0,(SOCKADDR*)&addrTo,sizeof(addrTo));
if(ret==SOCKET_ERROR)
{
CString s;
s.Format("%d",WSAGetLastError());//s为100049
AfxMessageBox(s);
}
}
sendto发生错误,错误码:100046(不能分配请求的地址)
小弟初学,很肤浅,请各位高手看看有什么毛病,我实在是没办法了。