Ejemplo n.º 1
0
 public static bool Send(Packet p)
 {
     if ((m_Server == null) || (p == null))
     {
         return(false);
     }
     byte[] buffer = p.Compile();
     if (OnSend != null)
     {
         OnSend(buffer.Length);
     }
     if (p.Encode)
     {
         m_CryptoProvider.Encrypt(buffer, 0, buffer.Length);
     }
     try
     {
         if (buffer.Length > (m_SendBuffer.Length - m_SendLength))
         {
             if (m_SendLength > 0)
             {
                 m_Server.Send(m_SendBuffer, 0, m_SendLength, SocketFlags.None);
             }
             m_SendLength = 0;
             if (buffer.Length >= m_SendBuffer.Length)
             {
                 m_Server.Send(buffer, 0, buffer.Length, SocketFlags.None);
             }
             else
             {
                 Buffer.BlockCopy(buffer, 0, m_SendBuffer, 0, buffer.Length);
                 m_SendLength += buffer.Length;
             }
         }
         else
         {
             Buffer.BlockCopy(buffer, 0, m_SendBuffer, m_SendLength, buffer.Length);
             m_SendLength += buffer.Length;
         }
         m_LastNetworkActivity.Reset();
     }
     catch (SocketException exception)
     {
         Debug.Trace("SocketException caught in Network.Send()");
         Debug.Trace("Error Code: 0x{0:X}", exception.ErrorCode);
         Debug.Trace("Native Error Code: 0x{0:X}", exception.NativeErrorCode);
         Debug.Error(exception);
         Gumps.MessageBoxOk("Connection lost", true, new OnClick(Engine.DestroyDialogShowAcctLogin_OnClick));
         Disconnect();
         Cursor.Hourglass = false;
         m_SoftDisconnect = false;
         Engine.amMoving  = false;
         p.Dispose();
         return(false);
     }
     p.Dispose();
     return(true);
 }
Ejemplo n.º 2
0
        public static readonly Packet pong = new Packet(2);         // udpPong
        public static void PingPongS(long sTime)
        {
            Packet p = pong;

            p.Write(sTime);
            p.Write(time);
            SendUdpData(p);
            p.Dispose();
        }
Ejemplo n.º 3
0
 public static bool Send(Packet p)
 {
     if ((m_Server == null) || (p == null))
     {
         return false;
     }
     byte[] buffer = p.Compile();
     if (OnSend != null)
     {
         OnSend(buffer.Length);
     }
     if (p.Encode)
     {
         m_CryptoProvider.Encrypt(buffer, 0, buffer.Length);
     }
     try
     {
         if (buffer.Length > (m_SendBuffer.Length - m_SendLength))
         {
             if (m_SendLength > 0)
             {
                 m_Server.Send(m_SendBuffer, 0, m_SendLength, SocketFlags.None);
             }
             m_SendLength = 0;
             if (buffer.Length >= m_SendBuffer.Length)
             {
                 m_Server.Send(buffer, 0, buffer.Length, SocketFlags.None);
             }
             else
             {
                 Buffer.BlockCopy(buffer, 0, m_SendBuffer, 0, buffer.Length);
                 m_SendLength += buffer.Length;
             }
         }
         else
         {
             Buffer.BlockCopy(buffer, 0, m_SendBuffer, m_SendLength, buffer.Length);
             m_SendLength += buffer.Length;
         }
         m_LastNetworkActivity.Reset();
     }
     catch (SocketException exception)
     {
         Debug.Trace("SocketException caught in Network.Send()");
         Debug.Trace("Error Code: 0x{0:X}", exception.ErrorCode);
         Debug.Trace("Native Error Code: 0x{0:X}", exception.NativeErrorCode);
         Debug.Error(exception);
         Gumps.MessageBoxOk("Connection lost", true, new OnClick(Engine.DestroyDialogShowAcctLogin_OnClick));
         Disconnect();
         Cursor.Hourglass = false;
         m_SoftDisconnect = false;
         Engine.amMoving = false;
         p.Dispose();
         return false;
     }
     p.Dispose();
     return true;
 }