void CJSocket::SetServerPort(unsigned int port)
{
//套接字绑定的端口号设置函数
m_serverPort = port;
}
SOCKET CJSocket::GetSocket()
{
//获取套接字函数
return m_socket;
}本文来自优.文~论^文·网原文请找腾讯324,9114
BOOL CJSocket::SockSend(char* sendBuf, int len)
{
//数据包发送函数
if(sendto(m_socket,sendBuf,len,0,(sockaddr*)&m_servaddr,sizeof(m_servaddr))==SOCKET_ERROR)
{
return FALSE;
}
return TRUE;
}
int CJSocket::SockRecv(char* recvBuf, sockaddr_in* peeraddr, int len)
{
//数据包接收函数
int rcvData = -1;
if(rcvData=recvfrom(m_socket,recvBuf,1024,0,(sockaddr*)&peeraddr,&len)==SOCKET_ERROR)
{
return SOCKET_ERROR;
}
return rcvData;
}
void CJSocket::SockClose()
{
//关闭套接字函数
closesocket(m_socket);
}
CJSocket::~CJSocket()
{
}论文网http://www.youerw.com/
(2)在客户端各个需要接受服务器消息的对话框绑定类中添加如下步骤:
1)在主对话框类CLLK_ClientDlgDlg中定义一个CJSocket类型的成员:
CJSocket udpSocket;
2)在主对话框类CLLK_ClientDlgDlg初始化时将udpSocket与该窗口绑定:
WSAAsyncSelect(udpSocket.GetSocket(),this->GetSafeHwnd(),WM_SOCKET,FD_READ);
3)定义一个响应服务器消息的用户自定义消息响应
在主对话框类CLLK_ClientDlgDlg中利用#define语句定义自己的消息:
#define WM_SOCKET WM_USER+1本文来自优.文~论^文·网原文请找腾讯324,9114
在主对话框类CLLK_ClientDlgDlg中进行自定义消息处理函数的声明:
afx_msg LRESULT OnSockMsg(WPARAM wParam, LPARAM lParam);
在主对话框类CLLK_ClientDlgDlg中自定义消息映射宏的定义:
ON_MESSAGE(WM_SOCKET,OnSockMsg)
在主对话框类CLLK_ClientDlgDlg中中编写消息处理函数:
LRESULT CLLK_ClientDlgDlg::OnSockMsg(WPARAM wParam, LPARAM lParam)
{
…
}
由于IOCP是Windows平台最高效的通信模型,可以在一个应用程序同时管理为数众多的套接字,以达到最佳的系统性能!所以本系统采用IOCP模型进行服务器网络通信的搭建,其步骤具体如下:
(1)在服务器主窗口类CMY_UdpIocpSrvDlg中定义IOCP数据结构:#define DATA_SIZE 1024
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>