/// <summary> /// 发送到GameServer /// </summary> public void SendToGameServer(C2S_HEADER proto) { // 握手失败,不需要发消息 if (!m_Handshake) { return; } m_PlayerToGSProto.byProtocol = (byte)KC2G_Protocol.c2g_player_to_gs; m_SendToGameServerWriter.Seek(HEADER_LENGTH, SeekOrigin.Begin); proto.Pack(m_SendToGameServerWriter); m_PlayerToGSProto._dataLength_ = (int)m_SendToGameServerWriter.Seek(0, SeekOrigin.Current); m_SendToGameServerWriter.Seek(0, SeekOrigin.Begin); m_SendToGameServerWriter.Write((ushort)(m_PlayerToGSProto._dataLength_ - HEADER_LENGTH)); m_SendToGameServerWriter.Flush(); m_PlayerToGSProto.data = (m_SendToGameServerWriter.BaseStream as MemoryStream).GetBuffer(); #region 可能是加密、验证 m_PlayerToGSProto.uSign = m_MessageTokenHash * m_MessageIndex * m_MessageToken[(int)(m_MessageIndex % m_MessageToken.Length)] * 47987731; m_PlayerToGSProto.uSign |= m_MessageToken[(int)((m_MessageIndex) % m_MessageToken.Length)]; if (!string.IsNullOrEmpty(m_MessageToken)) { int index = 0; for (int iData = sizeof(ushort); iData < m_PlayerToGSProto._dataLength_; iData++) { m_PlayerToGSProto.data[iData] = (byte)(m_PlayerToGSProto.data[iData] ^ m_MessageToken[index++ % m_MessageToken.Length]); } } m_MessageIndex++; m_MessageIndex += m_MessageToken[(int)(m_MessageIndex % m_MessageToken.Length)]; #endregion LogDetail("Send to GameServer", proto, proto.protocolID, ((KC2S_Protocol)proto.protocolID).ToString(), m_PlayerToGSProto._dataLength_); SendToGatewayServer(m_PlayerToGSProto); }
/// <summary> /// 发送协议 TODO:网络层重构 /// </summary> /// <param name="msg"></param> protected void SendToGameServer(C2S_HEADER msg) { NetworkManager.Instance.SendToGameServer(msg); }
protected void SendMessage(C2S_HEADER buf) { gameSocket.SendMessage(buf); }
public void SendMessage(C2S_HEADER buf) { gameSocket.SendMessage(buf); }