/// <summary> /// 发包 /// </summary> /// <param name="conn_idx"></param> /// <param name="packet"></param> public void Send(long conn_idx, PacketBase packet) { if (m_sockets.Contains(conn_idx)) { //包索引 uint packet_idx = 0; if (packet is PackBaseC2S) { packet_idx = PacketEncrypt.GetPacketIndex(); (packet as PackBaseC2S).packet_idx = PacketEncrypt.EncrpytPacketIndex(packet_idx, GlobalID.ENCRYPT_KEY); } m_send_by.Clear(); m_send_by.WriteUShort(0);//先写入长度占位 packet.Write(m_send_by); int data_len = m_send_by.Available - NetID.PacketHeadSize; m_send_by.ModifyUShort((ushort)data_len, 0); //数据有效性 if (packet is PackBaseC2S) { //包长2 + 协议头2 + 包索引id4 + 有效性校验2 = 10 ushort data_verify = PacketEncrypt.CalcPacketDataVerify(m_send_by.Buffer, 10, m_send_by.Available - 10, packet_idx, GlobalID.ENCRYPT_KEY); m_send_by.ModifyUShort((ushort)data_verify, 8); } int size = NetConnectManager.Instance.Send(conn_idx, m_send_by); m_send_msg_count++; m_send_msg_size += size; } PacketPools.Recover(packet); }
/// <summary> /// 发包 /// </summary> /// <param name="conn_idx"></param> /// <param name="packet"></param> public void Send(PacketBase packet) { if (m_cur_conn_idx > 0) { //包索引 uint packet_idx = 0; if (packet is PackBaseC2S) { packet_idx = PacketEncrypt.GetPacketIndex(); (packet as PackBaseC2S).packet_idx = PacketEncrypt.EncrpytPacketIndex(packet_idx, GlobalID.ENCRYPT_KEY); } //数据写入stream m_send_by.Clear(); m_send_by.WriteUShort(0); //先写入长度占位 packet.Write(m_send_by); int data_len = m_send_by.Available - NetID.PacketHeadSize; //总长度 m_send_by.ModifyUShort((ushort)data_len, 0); //数据有效性 if (packet is PackBaseC2S) { //包长2 + 协议头2 + 包索引id4 + 有效性校验2 = 10 ushort data_verify = PacketEncrypt.CalcPacketDataVerify(m_send_by.Buffer, 10, m_send_by.Available - 10, packet_idx, GlobalID.ENCRYPT_KEY); m_send_by.ModifyUShort((ushort)data_verify, 8); } NetConnectManager.Instance.Send(m_cur_conn_idx, m_send_by); } PacketPools.Recover(packet); }
public int Send(long conn_idx, PacketBase packet) { m_send_by.Clear(); m_send_by.WriteUShort(0);//先写入长度占位 packet.Write(m_send_by); int len = NetConnectManager.Instance.Send(conn_idx, m_send_by); PacketPools.Recover(packet); return(len); }
public int Send2WS(PacketBase packet) { if (m_world_conn_idx == 0) { return(0); } m_send_by.Clear(); m_send_by.WriteUShort(0);//先写入长度占位 packet.Write(m_send_by); int len = NetConnectManager.Instance.Send(m_world_conn_idx, m_send_by); PacketPools.Recover(packet); return(len); }
/// <summary> /// 发消息给client /// </summary> /// <param name="conn_idx"></param> /// <param name="packet"></param> /// <returns></returns> public int Send(long conn_idx, PacketBase packet) { int size = 0; if (m_net_socket != null) { m_send_by.Clear(); m_send_by.WriteUShort(0);//先写入长度占位 packet.Write(m_send_by); size = m_net_socket.Send(conn_idx, m_send_by); } PacketPools.Recover(packet); return(size); }