/// <summary> /// 处理连接请求 /// </summary> /// <param name="e"></param> private void processAccept(SocketAsyncEventArgs e) { //限制线程的访问 acceptSemaphore.WaitOne(); //得到客户端的对象 //Socket clientSocket = e.AcceptSocket; ClientPeer client = clientPeerPool.Dequeue(); client.ClientSocket = e.AcceptSocket; Console.WriteLine("客户端连接成功:" + client.ClientSocket.RemoteEndPoint.ToString()); //开始接收数据 startReceive(client); e.AcceptSocket = null; startAccept(e); }
/// <summary> /// 一条数据解析完成的处理 /// </summary> /// <param name="client">对象的连接对象</param> /// <param name="value">解析出来的一个具体能使用的类型</param> private void receiveCompleted(ClientPeer client, SocketMsg msg) { //给应用层 让其使用 application.OnReceive(client, msg); }
public void Enqueue(ClientPeer client) { clientPeerQueue.Enqueue(client); }