Example #1
0
        private void ConnectCallBack(IAsyncResult iar)
        {
            allDone.Set();

            try
            {
                clientSocket = (TcpClient)iar.AsyncState;
                clientSocket.EndConnect(iar);

                if (OnSendStatusMSG != null)
                {
                    OnSendStatusMSG(string.Format("与服务器[{0}]连接成功...", clientSocket.Client.LocalEndPoint));
                }

                networkStream = clientSocket.GetStream();
                DataRead dataRead = new DataRead(networkStream, clientSocket.ReceiveBufferSize);
                networkStream.BeginRead(dataRead.msg, 0, dataRead.msg.Length, ReadCallBack, dataRead);

                isListen = true;

                if (OnDoConnect != null)
                {
                    OnDoConnect(clientSocket.Client.LocalEndPoint.ToString());
                }
            }
            catch (Exception e)
            {
                if (OnSendStatusMSG != null)
                {
                    OnSendStatusMSG(e.Message);
                }

                if (OnDoDisconnect != null)
                {
                    OnDoDisconnect("连接异常...");
                }


                SocketDisconnect();


                return;
            }
        }
Example #2
0
        private void ReadCallBack(IAsyncResult iar)
        {
            try
            {
                DataRead dataRead = (DataRead)iar.AsyncState;
                int      recv     = dataRead.networkStream.EndRead(iar);

                byte[] data = new byte[recv];
                Array.Copy(dataRead.msg, 0, data, 0, data.Length);

                if (isListen == true)
                {
                    if (OnSendRecMSG != null)
                    {
                        OnSendRecMSG(data);
                    }

                    dataRead = new DataRead(networkStream, clientSocket.ReceiveBufferSize);
                    networkStream.BeginRead(dataRead.msg, 0, dataRead.msg.Length, ReadCallBack, dataRead);
                }
            }
            catch (SocketException e)
            {
                if (OnSendStatusMSG != null)
                {
                    OnSendStatusMSG(e.Message);
                }
            }
            catch (IOException ioe)
            {
                if (OnSendStatusMSG != null)
                {
                    OnSendStatusMSG(ioe.Message);
                }

                SocketDisconnect();
            }
        }