首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

MFC SOCKET 10048异常!

2013-08-06 
MFCSOCKET10048错误!!!写了一个TCP/IP的程序总是bind()的时候10048错误 ,改了N多个端口 还是这个错误。。。。。

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)

热点排行