private bool SendMessage(NetworkPacket packet) { int sendBytes = this.m_networkClient.Client.Send(packet.ToByteArray()); Debug.Log("Send {0} bytes. Packet size: {1} bytes.", sendBytes, packet.CalculateSize()); return (sendBytes == packet.CalculateSize()); }
private bool SendMessage(long client, bool server, int type, IMessage message, bool encrypt) { if (!this.m_tcpClient.Connected) { Debug.Error("Cannot send data through a disconnected connection."); return false; } ByteString messageContent = message.ToByteString(); NetworkPacket networkPacket = new NetworkPacket(); networkPacket.Type = type; networkPacket.Server = server; networkPacket.ClientId = client; networkPacket.Encrypted = encrypt; if (networkPacket.Encrypted) { AsymmetricKeyParameter localKeyParameter = null; if (networkPacket.Server) localKeyParameter = this.m_serverKey; else if(this.m_localKeyring.ContainsKey(client)) localKeyParameter = this.m_localKeyring[client]; if (localKeyParameter == null) { Debug.Error("Invalid key for Send. ClientId={0} Server={1}.", client, server); return false; } messageContent = this.ProceedMessageEncoding(localKeyParameter, messageContent); if (messageContent == null) { Debug.Error("Processed message is invalid."); return false; } } networkPacket.Message = messageContent; try { int networkPacketSize = networkPacket.CalculateSize(); int bytesSend = this.m_tcpClient.Client.Send(networkPacket.ToByteArray()); Debug.Log("Sended {0} bytes. Network packet Size={1}.", bytesSend, networkPacketSize); return (bytesSend == networkPacketSize); } catch (Exception ex) { Debug.Exception(ex); if(!this.m_requestedDisconnect) this.ServerConnectionError(); return false; } }