110,533
社区成员
发帖
与我相关
我的任务
分享
//接受一个客户端的连接请求
Socket oldserver = (Socket) iar.AsyncState;
Socket client = oldserver.EndAccept(iar);
//检查是否达到最大的允许的客户端数目
if (_clientCount == _maxClient)
{
//服务器已满,发出通知
if (ServerFull != null)
{
ServerFull(this, new NetEventArgs(new Session(client)));
}
}
else
{
Session newSession = new Session(client);
_sessionTable.Add(newSession.ID, newSession);
//客户端引用计数+1
_clientCount++;
//开始接受来自该客户端的数据
client.BeginReceive(_recvDataBuffer, 0, _recvDataBuffer.Length, SocketFlags.None,
new AsyncCallback(ReceiveData), client);
//新的客户端连接,发出通知
if (ClientConn != null)
{
ClientConn(this, new NetEventArgs(newSession));
}
}
//继续接受客户端
_svrSock.BeginAccept(new AsyncCallback(AcceptConn), _svrSock);