Exemple #1
0
 private void SendPto(ref Network.PtoBase data)
 {
     if (m_State != EnNetState.Connected)
     {
         return;
     }
     m_Client.Write(ref data);
 }
Exemple #2
0
    public bool Reader_s2c_login_error(ref BinaryReader br, out Network.PtoBase data)
    {
        T_s2c_login_error t = new T_s2c_login_error();

        t._name = "s2c_login_error";
        data    = t;
        return(t.Read(ref br));
    }
Exemple #3
0
    public bool Reader_c2s_login_version(ref BinaryReader br, out Network.PtoBase data)
    {
        T_c2s_login_version t = new T_c2s_login_version();

        t._name = "c2s_login_version";
        data    = t;
        return(t.Read(ref br));
    }
Exemple #4
0
    public bool Write(ref Network.PtoBase data)
    {
        if (!IsConnected())
        {
            return(false);
        }
        m_Writer.Seek(0, SeekOrigin.Begin);
        bool ret = m_Net.WritePacket(ref data, ref m_Writer);

        if (!ret)
        {
            return(false);
        }
        m_Socket.BeginSend(m_WriteBuffer, 0, (int)(m_Writer.BaseStream.Position),
                           SocketFlags.None, SendCallBack, m_Socket);
        //m_Socket.Send(m_WriteBuffer, 0, (int)m_Writer.BaseStream.Position, SocketFlags.None);
        return(true);
    }
Exemple #5
0
 public void MainLoop()
 {
     if (m_ReadQueue.Count <= 0)
     {
         return;
     }
     Network.PtoBase pack = null;
     for (int i = 0; i < Network.READ_PACKET_PER_FRAME; i++)
     {
         if (m_ReadQueue.Count <= 0)
         {
             break;
         }
         pack = m_ReadQueue.Dequeue();
         if (pack == null)
         {
             break;
         }
         m_Net.HandlePacket(ref pack);
     }
 }
Exemple #6
0
 void ReceiveCallBack(IAsyncResult ar)
 {
     try
     {
         int size = m_Socket.EndReceive(ar);
         m_ReadSize += size;
         // 分包
         ushort len = 0;
         ushort pos = 0;
         while (size >= Network.PACKET_LEN_MIN)
         {
             // 先读取2字节的包体长度
             len = System.BitConverter.ToUInt16(m_ReadBuffer, pos);
             if (len > m_ReadSize - Network.PACKET_HEAD)
             {
                 // 包体不完整,等待完整后读取
                 break;
             }
             pos += 2;
             m_Reader.Read(m_ReadBuffer, pos, len);
             Network.PtoBase pack = m_Net.ReadPacket(ref m_Reader);
             pos += len;
             m_ReadQueue.Enqueue(pack);
         }
         if (pos > 0)
         {
             Buffer.BlockCopy(m_ReadBuffer, pos, m_ReadBuffer, 0, m_ReadSize - pos);
             m_ReadSize -= pos;
         }
         m_Socket.BeginReceive(m_ReadBuffer, m_ReadSize, Network.CLIENT_READ_BUFF_MAX - m_ReadSize,
                               SocketFlags.None, ReceiveCallBack, m_Socket);
     }
     catch (SocketException e)
     {
         OnError(e);
         m_Socket.Close();
         OnDisconnected();
     }
 }
Exemple #7
0
    public bool Writer_s2c_login_error(ref Network.PtoBase data, ref BinaryWriter bw)
    {
        T_s2c_login_error t = (T_s2c_login_error)data;

        return(t.Write(ref bw));
    }
Exemple #8
0
    public bool Writer_c2s_login_version(ref Network.PtoBase data, ref BinaryWriter bw)
    {
        T_c2s_login_version t = (T_c2s_login_version)data;

        return(t.Write(ref bw));
    }