nbsp; file://绑定到本地一个端口上
sockaddr_in localaddr;
localaddr.sin_family = AF_INET;
localaddr.sin_port = htons(8888); file://端口号不要与其他应用
程序冲突
localaddr.sin_addr.s_addr = 0;
if(bind(ServerSock ,(struct sockaddr*)&localaddr,sizeof(sockaddr))
= = SOCKET_ERROR)
{
MessageBox("绑定地址失败!");
closesocket(ServerSock);
WSACleanup();
return FALSE;
}
file://将SeverSock设置为异步非阻塞模式,并为它注册各种网络异步事件,其 中 m_hWnd
file://为应用
程序的主对话框或主窗口的句柄
if(WSAAsyncSelect(ServerSock, m_hWnd, NETWORK_EVENT,
FD_ACCEPT | FD_CLOSE | FD_READ | FD_WRITE) == SOCKET_ERROR)
{
MessageBox("注册网络异步事件失败!");
WSACleanup();
return FALSE;
}
listen(ServerSock, 5); file://设置侦听模式
return TRUE;
}
下面定义网络异步事件的回调函数
void CSocketSeverDlg::OnNetEvent(WPARAM wParam, LPARAM lParam)
{
file://调用Winsock API函数,得到网络事件类型
int iEvent = WSAGETSELECTEVENT(lParam);