在OnInitDlg函数中添加如下代码
m_pSevrSocket = new CServerSocket();
m_pSevrSocket->Create(8118);
m_pSevrSocket->Listen();
m_pSevrSocket是服务器端一个总的Socket,专门用来监听要接入的Socket.
对m_pSevrSocket重写OnAccept函数,这个函数是干啥的?是专门用来对要接入的socket进行接入的操作。我们新建一个新的类型的socket,专门用来处理接入的socket。这里可以看到,其实m_pSevrSocket相当于一个前台人员,专门用来登记要来的客人,而新创建的类型的socket相当于是一个办事人员。
void CServerSocket::OnAccept(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
CServerHandle2Socket* pSocket = new CServerHandle2Socket();
this->Accept(*pSocket);
CSocket::OnAccept(nErrorCode);
}
有几个来客,就new几个CServerHandle2Socketren办事人员。该办事人员跟客人是一对一的关系。
这时候,把办事人员的OnReceive函数重载,相当于开始受理客人的请求。对客户的请求,在OnReceive函数中进行处理。
void CServerHandle2Socket::OnReceive(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
int len=Receive(m_pBuffer,1024);
CSocket::OnReceive(nErrorCode);
}
其中Receive、receive;Accept,accept的区别是,首字母大写的是封装的形式。