void ProcessMess(ReviceBuffer buff)
        {
            byte[] byt  = buff.ReviceByte;
            string Mess = Encoding.ASCII.GetString(byt).Trim().Trim((char)'\0');

            if (Mess.StartsWith("GetFile ", StringComparison.InvariantCultureIgnoreCase))
            {
                string FileName = Mess.Replace("GetFile ", "").Trim().Trim((char)0);

                SendFile(FileName, buff.Client);
            }
            else if (Mess.Equals("Success", StringComparison.InvariantCultureIgnoreCase))
            {
                ars.Set();
            }
            else if (Mess.Equals("Error", StringComparison.InvariantCultureIgnoreCase))
            {
                byte[] sendBuff = SocketFileInfo.GetSendByte(socketSendFile);
                ars.Reset();
                socketSendFile.Client.BeginSend(
                    sendBuff,
                    0,
                    sendBuff.Length,
                    SocketFlags.None, null, null);
            }
            else if (Mess.Equals("SynchroGetFile ", StringComparison.InvariantCultureIgnoreCase))
            {
                string FileName = Mess.Replace("SynchroGetFile ", "").Trim().Trim((char)0);
            }
        }
Exemple #2
0
        private void DoReadBuff(IAsyncResult ar)
        {
            lock (obj)
            {
                try
                {
                    StateObject so       = (StateObject)ar.AsyncState;
                    int         ReadSize = ClientSocket.EndReceive(ar);
                    if (ReadSize > 0)
                    {
                        ReviceBuffer Buffer = new ReviceBuffer(so.RevaceBuf, ClientSocket, so.Error);
                        try
                        {
                            OnRevice(Buffer);
                            SendComand("Success");
                        }
                        catch
                        {
                            SendComand("Error");
                        }
                    }

                    StateObject reviceBuff = new StateObject();
                    ClientSocket.BeginReceive(reviceBuff.RevaceBuf, 0, StateObject.BufferSize, SocketFlags.None, out reviceBuff.Error, new AsyncCallback(DoReadBuff), reviceBuff);
                }
                catch (SocketException)
                {
                    ClientSocket.Close();
                }
            }
        }
Exemple #3
0
 protected void OnRevice(ReviceBuffer ReviceBuffer)
 {
     if (Revice != null)
     {
         Revice.Invoke(this, ReviceBuffer);
     }
 }
Exemple #4
0
        void ProcessMess(ReviceBuffer buff)
        {
            byte[] byt  = buff.ReviceByte;
            string Mess = Encoding.ASCII.GetString(byt).Trim().Trim((char)'\0');

            if (Mess.StartsWith("SynchroGetFile ", StringComparison.InvariantCultureIgnoreCase))
            {
                string FileName = Mess.Replace("SynchroGetFile ", "").Trim().Trim((char)0);
                SynchroSendFile(FileName);
            }
        }
Exemple #5
0
        private void DoReadBuff(IAsyncResult ar)
        {
            StateObject so     = (StateObject)ar.AsyncState;
            Socket      Client = so.Client;

            try
            {
                int ReadSize = Client.EndReceive(ar);
                if (ReadSize > 0)
                {
                    ReviceBuffer Buffer = new ReviceBuffer(so.RevaceBuf, Client, so.Error);
                    ProcessMess(Buffer);
                }
                so.RevaceBuf = null;
                so.RevaceBuf = new byte[StateObject.BufferSize];
            }
            catch (SocketException)
            {
                Client.Close();
            }
        }
        private void DoReadBuff(IAsyncResult ar)
        {
            StateObject so     = (StateObject)ar.AsyncState;
            Socket      Client = so.Client;

            try
            {
                int ReadSize = Client.EndReceive(ar);
                if (ReadSize > 0)
                {
                    ReviceBuffer Buffer = new ReviceBuffer(so.RevaceBuf, Client, so.Error);
                    ProcessMess(Buffer);
                }
                so.RevaceBuf = null;
                so.RevaceBuf = new byte[StateObject.BufferSize];
                resultIAsync = Client.BeginReceive(so.RevaceBuf, 0, StateObject.BufferSize, SocketFlags.None, out so.Error, new AsyncCallback(DoReadBuff), so);
            }
            catch (SocketException err)
            {
                if (err.ErrorCode == 10054) //客户端退出
                {
                    Client.Close();
                }
                else if (err.ErrorCode == 10053)     //服务器主动断开连接
                {
                    Client.Close();
                }
                else if (err.ErrorCode == 10060)     //服务器主动断开连接
                {
                    Client.Close();
                }
                else
                {
                    Client.Close();
                }
            }
            catch (Exception err)
            {
            }
        }