예제 #1
0
        private void OnReceiveCompleted(object sender, SocketAsyncEventArgs e)
        {
            if (e.SocketError == SocketError.OperationAborted)
            {
                return;
            }

            Socket socket = sender as Socket;

            if (e.SocketError == SocketError.Success && e.BytesTransferred > 0)
            {
                string ipAdress      = socket.RemoteEndPoint.ToString();
                int    lengthBuffer  = e.BytesTransferred;
                byte[] receiveBuffer = e.Buffer;
                byte[] buffer        = new byte[lengthBuffer];
                Buffer.BlockCopy(receiveBuffer, 0, buffer, 0, lengthBuffer);

                string msg = Encoding.Default.GetString(buffer);
                //Console.WriteLine("Client : receive message[ {0} ],from Server[ {1} ]", msg, ipAdress);
                //char[] c = "end".ToCharArray();
                //lm.newReceiveData(msg);
                if (msg.Contains("addin"))
                {
                    if (!temp.Equals(""))
                    {
                        msg = temp + msg;
                    }
                    string[] message = msg.Split(';');
                    //if (message.Length > 10)
                    {
                        for (int i = 0; i < message.Length; i++)
                        {
                            if (message[i].Split(',').Length > 10)
                            {
                                lm.newReceiveData(message[i] + ";end");
                                temp = "";
                            }
                            else
                            {
                                temp = message[i];
                                //Console.WriteLine(message[i]);
                            }
                        }
                    }
                }
                else
                {
                    lm.newReceiveData(msg);
                }
                socket.ReceiveAsync(e);
            }
            else if (e.SocketError == SocketError.ConnectionReset || e.BytesTransferred == 0)
            {
                //Console.WriteLine("Client: 服务器断开连接 ");
                lm.Disconnect();
                //DisConnect();
            }
            else
            {
                return;
            }
        }