コード例 #1
0
ファイル: Read_KWX.cs プロジェクト: EinsteinD/bandaren
 public void ReadBody(IAsyncResult ansy)//读身体
 {
     try
     {
         if (!mtcpClient.Connected || !Ns_Read.CanRead)
         {
             Debuger.Log("链接已经被释放");
             return;
         }
         BufferData Msg = (BufferData)ansy.AsyncState;
         int        len = Ns_Read.EndRead(ansy);
         BufOffset += len;
         Debuger.Log("#####################!分割线!#####################");
         Debuger.Log("Body读到字节数:" + len);
         Debuger.Log("Body总共读的字节数:" + BufOffset);
         if (len == 0)
         {
             Debuger.Log("读到0 服务器是否已经断开客户端连接");
         }
         else if (BufOffset == Msg.Length)
         {
             ReadDATA(Msg);
         }
         else
         {
             Debuger.Log("还没读完 继续读body");
             StartReadBody(Msg);//数据还没读完继续读身体
         }
     }
     catch (Exception ex)
     {
         Debuger.LogRed("网络层读取异常 " + ex.Message + " " + ex.StackTrace);
         return;
     }
 }
コード例 #2
0
ファイル: Read_KWX.cs プロジェクト: EinsteinD/bandaren
 public void StartRead()//开始读头
 {
     if (Ns_Read.CanRead)
     {
         Ns_Read.BeginRead(Buf, BufOffset, 8 - BufOffset, ReadHead, Ns_Read);
     }
 }
コード例 #3
0
ファイル: Read_KWX.cs プロジェクト: EinsteinD/bandaren
 public void StartReadBody(BufferData Msg)//开始读身体
 {
     if (Msg.Length - BufOffset == 0)
     {
         Debuger.Log("包体长度为0 是否服务器没有返回包体 直接读包体");
         ReadDATA(Msg);
     }
     else
     {
         Ns_Read.BeginRead(Buf, BufOffset, Msg.Length - BufOffset, ReadBody, Msg);
     }
 }
コード例 #4
0
ファイル: Read_KWX.cs プロジェクト: EinsteinD/bandaren
        public void ReadHead(IAsyncResult ansy)//读头
        {
            int len;

            try
            {
                if (!mtcpClient.Connected || !Ns_Read.CanRead)
                {
                    Debuger.Log("链接已经被释放");
                    return;
                }
                len = Ns_Read.EndRead(ansy);
                Debuger.Log("#####################!分割线!#####################");
                BufOffset += len;
                Debuger.Log("Head读到字节数:" + len);
                Debuger.Log("Head总共读的字节数:" + BufOffset);
                if (len == 0)
                {
                    Debuger.Log("读到0 服务器是否已经断开客户端连接");
                }
                else if (BufOffset == 8)
                {
                    ReadPageCount++;
                    BufOffset = 0;
                    int MsgId = BitConverter.ToInt32(Buf, 0);
                    Debuger.Log("MsgID是:" + MsgId);
                    int MsgLength = BitConverter.ToInt32(Buf, 4);
                    Debuger.Log("Msg包体长度:" + MsgLength);
                    Debuger.Log("已收到成功消息包的数量为:" + ReadPageCount);
                    BufferData Data_Game = new BufferData();
                    Data_Game.Cmd    = MsgId;
                    Data_Game.Length = MsgLength;
                    StartReadBody(Data_Game);
                }
                else
                {
                    Debuger.Log("还没读完 继续读head");
                    StartRead();
                }
            }
            catch (Exception ex)
            {
                Debuger.Log(ex.Message);
                NET_KWX.Instance_.mtcpClient.Close();
                return;
            }
        }
コード例 #5
0
 void Send(byte[] buf)
 {
     if (Ns_Read == null)
     {
         Debuger.Log("网络流未被初始化");
     }
     if (Ns_Read.CanWrite)
     {
         //Ns_Read.Write(buf, 0, buf.Length);
         lock (Ns_Read)
         {
             Ns_Read.BeginWrite(buf, 0, buf.Length, SendOK, null);
         }
     }
     else
     {
         Debuger.Log("数据流已经被关闭 无法写入");
     }
 }
コード例 #6
0
 void SendOK(IAsyncResult ansy)
 {
     Ns_Read.EndWrite(ansy);
     SendPageCount++;
     Debuger.Log("SEND OK 已发送成功消息包的数量为:" + SendPageCount);
 }