MFC SOCKET 10048错误!!!
写了一个TCP/IP的程序 总是bind()的时候10048错误 ,改了N多个端口 还是这个错误。。。。。why?
服务端:
WSADATA wsaData;
WORD sockVersion=MAKEWORD(1,1);
::WSAStartup(sockVersion,&wsaData);
SOCKET sockSrv=::socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(sockSrv==INVALID_SOCKET)
{
printf("failed socket()");
::WSACleanup();
return ;
}
sockaddr_in sin;
sin.sin_family=AF_INET;
sin.sin_port=htons(4313);
sin.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
if(::bind(sockSrv,(LPSOCKADDR)&sin,sizeof(sin))==SOCKET_ERROR)
{
printf("server fail bind()\n");
printf("%d",WSAGetLastError());
::WSACleanup();
return;
}
if(::listen(sockSrv,5)==SOCKET_ERROR)
{
printf("failed listen()\n");
printf("%d",WSAGetLastError());
::WSACleanup();
return;
}
sockaddr_in remoteAddr;
int nAddrLen=sizeof(remoteAddr);
SOCKET client;
char szText[]="this is server program!!!\r\n";
while(true)
{
client=::accept(sockSrv,(SOCKADDR*)&remoteAddr,&nAddrLen);
if(client==INVALID_SOCKET)
{
printf("Fail accept()\n");
continue;
}
printf("accept a client connection:%s \r\n",inet_ntoa(remoteAddr.sin_addr));
::send(client,szText,strlen(szText),0);
::closesocket(client);
}
::closesocket(sockSrv);
::WSACleanup();
客户端:
WSADATA wsaData;
WORD sockVersion=MAKEWORD(1,1);
::WSAStartup(sockVersion,&wsaData);
SOCKET s=::socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(s=INVALID_SOCKET)
{
printf("fail socket()\n");
WSACleanup();
return;
}
sockaddr_in servAddr;
servAddr.sin_family=AF_INET;
servAddr.sin_port=htons(4313);
servAddr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
if(::connect(s,(sockaddr*)&servAddr,sizeof(servAddr))==-1)
{
printf("fail connect\n");
WSACleanup();
return;
}
char buff[256];
int nRecv=::recv(s,buff,256,0);
if(nRecv>0)
{
buff[nRecv]='\0';
printf("data from server: %s",buff);
}
::closesocket(s);
::WSACleanup();
------解决方案--------------------
用10000以上的试试 netstat -aon 自己看下端口的使用情况 选个没被使用的呗
[解决办法]
WSADATA wd;
int ret = WSAStartup(MAKEWORD(2,2),&wd);
if(ret != 0)
{
cout<<"Initialize Winsock Failed! "<<GetLastError()<<endl;;
return;
}
cout<<"WSAStartup OK"<<endl;
改成 MAKEWORD(2,2)