public void ReceiveTarget(IAsyncResult res) { Socket client = (Socket)res.AsyncState; int size = client.EndReceive(res); if (size > 0) { string address = client.RemoteEndPoint.ToString(); // 获取Client的IP和端口 string stringdata = null; if (ClientManager.IsExist(address, false)) // 握手 { stringdata = Encoding.UTF8.GetString(Bytes, 0, size); ClientManager.SendMsgToClient(client, ServerHelper.ResponseHeader(stringdata)); ClientManager.Open(address); } else { stringdata = ServerHelper.DecodeMsg(Bytes, size); } if (stringdata.IndexOf("exit") > -1) { ClientManager.SendMsgToClientList(address + "已从服务器断开", address); ClientManager.Close(address); Console.WriteLine(address + "已从服务器断开"); Console.WriteLine(address + " " + DateTimeOffset.Now.ToString("G")); return; } else { Console.WriteLine(stringdata); Console.WriteLine(address + " " + DateTimeOffset.Now.ToString("G")); ClientManager.SendMsgToClientList(stringdata, address); } } // 继续等待 client.BeginReceive(Bytes, 0, Bytes.Length, SocketFlags.None, new AsyncCallback(ReceiveTarget), client); }