步步惊心玉檀与九阿哥:不太明白CSocket的OnAccept

来源:百度文库 编辑:高校问答 时间:2024/04/25 15:58:26
比如说我们有两个继承CSocket的类,一个是CClientSocket一个是CServerSocket.当然我们要用client去connect那个Server,然后一旦制定对了端口和IP,connect()会触发CServerSocket对象的OnAccept()函数,然后好多程序里面会这样写
void CServerSocket::OnAccept(int nErrorCode)
{
CClientSocket * m_pNewClient = new CClientSocket();
ASSERT(m_pNewClient != NULL);
Accept(*m_pNewClient);

CSocket::OnAccept(nErrorCode);
}

这就是说你随便的建立了一个心的CClientSocket对象来让ServerSocket接受,这样接受怎么保证是和请求连接的客户端Socket一致?不太明白啊,这个新建立的ClientSocket既没有制定IP,也没有端口,ServerSocket怎么会知道和谁去通信呢?
其实我的核心问题就是说
Accept(*m_pNewClient);
这个函数内部参数m_pNewClient是在服务器上面随随便便new出来的一个和客户端毫不相干的Socket,这样他Accept这个会有什么意义呢?

Accept(*m_pNewClient);

这个函数起了你所说的哪些作用