我正在学习CSocket,我在网上下载了一个聊天室的例子。服务器例子里有两个子类ListeningSocket、ClientSocket,部分代码如下.
1。OnAccept是自动触发的吗?
2。例子里每次增加一个客户端,就new CClientSocket(this),请问这种方式对客户数量有限制吗?
3。如果多个客户端同时往服务器send,我需要在程序里处理先后顺序还是csocket可以自动处理?
void CListeningSocket::OnAccept(int nErrorCode)
{
CSocket::OnAccept(nErrorCode);
m_pDoc->ProcessPendingAccept();
}
bool CMYBBSDlg::initsock()
{
m_pSocket=new CListeningSocket(this);
if (m_pSocket->Create(2000) != TRUE)
return FALSE; if (m_pSocket->Listen() != TRUE)
return FALSE;
return TRUE;
}
void CMYBBSDlg::ProcessPendingAccept()
{
CClientSocket * pSocket = new CClientSocket(this); if (m_pSocket->Accept(*pSocket) != TRUE)
{
delete pSocket;
return;
}
m_connectionList.AddTail(pSocket);
}
1。OnAccept是自动触发的吗?
2。例子里每次增加一个客户端,就new CClientSocket(this),请问这种方式对客户数量有限制吗?
3。如果多个客户端同时往服务器send,我需要在程序里处理先后顺序还是csocket可以自动处理?
void CListeningSocket::OnAccept(int nErrorCode)
{
CSocket::OnAccept(nErrorCode);
m_pDoc->ProcessPendingAccept();
}
bool CMYBBSDlg::initsock()
{
m_pSocket=new CListeningSocket(this);
if (m_pSocket->Create(2000) != TRUE)
return FALSE; if (m_pSocket->Listen() != TRUE)
return FALSE;
return TRUE;
}
void CMYBBSDlg::ProcessPendingAccept()
{
CClientSocket * pSocket = new CClientSocket(this); if (m_pSocket->Accept(*pSocket) != TRUE)
{
delete pSocket;
return;
}
m_connectionList.AddTail(pSocket);
}
2、理论上讲是没有限制的,但实际上考虑到处理器的速度、内存的大小,还是有限制的。
3、tcp/ip会在底层自动处理的,现在的CPU速度都相当的快,相对于网络速度来讲,这不是问题。
2.理论上没有限定
3.没有先后顺序