Esempio n. 1
0
 public bool Send(Packet.Packet packet)
 {
     try {
         if (!IsRunning)
         {
             throw new ServiceException($"{serviceName} is not running.");
         }
         if (_client == null || !_client.Connected)
         {
             throw new ServiceException($"{serviceName} is not in connection.");
         }
         var packetData = packet.Data;
         var packetCode = _packetForwardService.GetPacketCode(typeof(T));
         var writer     = new _NetWriter(packetCode, packetData);
         writer.WriteNextSubPacket(new BinaryWriter(_client.GetStream()));
         if (showLog)
         {
             ULogger.Info($"<{serviceName}> {packet.GetType ().FullName} was sent.");
         }
         return(true);
     } catch (Exception e) {
         ULogger.Warning($"<{serviceName}> Send {packet.GetType ().FullName} failed.", e);
         return(false);
     }
 }
Esempio n. 2
0
 public bool Send(Packet.Packet packet)
 {
     try {
         if (!IsRunning)
         {
             throw new ServiceException($"{serviceName} is not running.");
         }
         var remoteEp   = new IPEndPoint(IPAddress.Parse(remoteIP), remotePort);
         var packetData = packet.Data;
         var packetCode = _packetForwardService.GetPacketCode(packet.GetType());
         var writer     = new _NetWriter(packetCode, packetData, _seq);
         while (true)
         {
             try {
                 _buffStream.Seek(0, SeekOrigin.Begin);
                 var bytesWritten =
                     writer.WriteNextSubPacket(new BinaryWriter(_buffStream));
                 _client.Send(_buffStream.GetBuffer(), (int)bytesWritten, remoteEp);
             } catch (EndOfStreamException) {
                 break;
             }
         }
         if (showLog)
         {
             ULogger.Info($"<{serviceName}> {packet.GetType ().FullName} was sent.");
         }
         return(true);
     } catch (Exception e) {
         ULogger.Warning($"<{serviceName}> Send {packet.GetType ().FullName} failed.", e);
         return(false);
     }
 }