Пример #1
0
 /// <summary>
 /// 从收到的 route_bytes 中获取需与下级服务器通信相关内容
 /// 本方法不产生 socket 通信
 /// </summary>
 /// <param name="recv_bytes">接收到来自client的路由数据</param>
 /// <param name="address">返回代理下级服务器地址</param>
 /// <param name="is_aim_proxy">代理下级服务器是否为代理 (决定socket_ep包头)</param>
 /// <param name="bytes_to_send">需向下级代理发送的内容</param>
 private void GetAimInfo(byte[] recv_bytes, out TCPAddress address, out bool is_aim_proxy, out byte[] bytes_to_send)
 {
     if (recv_bytes[0] == 1)
     {
         byte count = recv_bytes[1];
         if (count == 0)
         {
             address       = TCPAddress.FromBytes(recv_bytes, 2);
             is_aim_proxy  = false;
             bytes_to_send = new byte[recv_bytes.Length - 8];
             Array.Copy(recv_bytes, 8, bytes_to_send, 0, bytes_to_send.Length);
         }
         else
         {
             address       = TCPAddress.FromBytes(recv_bytes, 8);
             is_aim_proxy  = true;
             bytes_to_send = new byte[recv_bytes.Length - 6];
             Array.Copy(recv_bytes, bytes_to_send, 8);
             Array.Copy(recv_bytes, 14, bytes_to_send, 8, bytes_to_send.Length - 8);
             bytes_to_send[1] = (byte)(count - 1);
         }
         return;
     }
     address       = new TCPAddress();
     is_aim_proxy  = false;
     bytes_to_send = new byte[0];
 }