Exemple #1
0
 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());
 }
Exemple #2
0
    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;
      }
    }