|
发表于 2003-8-7 03:46:00
|
显示全部楼层
Re:··关于设置Socket为非阻塞,请高手指教~~!
WSADATA wsaData;
sockaddr_in SockAddr;
// 初始化TCP协议
if( WSAStartup( 0x0101, &wsaData ) )
return FALSE;
// 创建服务器端套接字
if( ( ServerSock = socket(PF_INET,SOCK_STREAM,0) ) == INVALID_SOCKET )
{
MessageBox( NULL, "创建Socket失败!", "", MB_OK );
return FALSE;
}
// 绑定到本地一个端口上
SockAddr.sin_family = AF_INET;
SockAddr.sin_port = htons(port);
SockAddr.sin_addr.S_un.S_addr = INADDR_ANY;
if( bind( ServerSock, (struct sockaddr *)&SockAddr, sizeof(SockAddr) ) == SOCKET_ERROR )
{
MessageBox( NULL, "绑定端口失败!", "", MB_OK );
return FALSE;
}
// 将SeverSock设置为异步非阻塞模式,并为它注册各种网络异步事件
if( WSAAsyncSelect( ServerSock, NULL, NETWORK_EVENT, FD_ACCEPT | FD_CLOSE | FD_READ | FD_WRITE ) == SOCKET_ERROR )
{
MessageBox( NULL, "注册网络异步事件失败!", "", MB_OK );
return FALSE;
}
以上有错吗?运行到WSAAsyncSelect()时总是返回SOCKET_ERROR,何解? |
|