Ejemplo n.º 1
0
        private static void ReceiveCallback(IAsyncResult ar)
        {
            try
            {
                EchoState echoState    = (EchoState)ar.AsyncState;
                Socket    clientSocket = echoState.socket;
                int       count        = clientSocket.EndReceive(ar);

                // 关闭客户端
                if (count == 0)
                {
                    clientSocket.Close();
                    clients.Remove(clientSocket);
                    Console.WriteLine("Socket Close");
                    return;
                }

                string readStr   = System.Text.Encoding.Default.GetString(echoState.readBuff, 0, count);
                byte[] sendBytes = System.Text.Encoding.Default.GetBytes(readStr);
                clientSocket.Send(sendBytes);
                clientSocket.BeginReceive(echoState.readBuff, 0, 1024, 0, ReceiveCallback, echoState);
            }
            catch (SocketException e)
            {
                Console.WriteLine("Socket Receive fail" + e.ToString());
            }
        }
Ejemplo n.º 2
0
        private static void AcceptCallback(IAsyncResult ar)
        {
            try
            {
                Console.WriteLine("[服务器] Accept");
                Socket listenSocket = (Socket)ar.AsyncState;
                Socket clientSocket = listenSocket.EndAccept(ar);

                // clients列表
                EchoState echoState = new EchoState();
                echoState.socket = clientSocket;
                clients.Add(clientSocket, echoState);

                // 接收数据BeginReceive
                clientSocket.BeginReceive(echoState.readBuff, 0, 1024, 0, ReceiveCallback, echoState);
            }
            catch (Exception e)
            {
                Console.WriteLine("Socket Accept fail" + e.ToString());
            }
        }