public void Send(Packet p) { byte[] buffer = p.Compile(); if (p.Encode) { this.m_CryptoProvider.Encrypt(buffer, 0, buffer.Length); } this.m_Socket.Send(buffer, 0, buffer.Length, SocketFlags.None); }
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; }