Example #1
0
 public void Send(UDPPackage package)
 {
     lock (this.locker)
     {
         byte[] bytes = package.Body;
         try
         {
             int sended = this._client.SendAsync(bytes, bytes.Length, this.EndPoint).GetAwaiter().GetResult();
             if (sended != bytes.Length)
             {
                 this.Event_SendError?.Invoke(new UDPEvent(this, package));
                 return;
             }
             if (this._listenThread == null)
             {
                 this.StartListen();
             }
         } catch (Exception e)
         {
             this.Event_ConnectionError?.Invoke(new UDPEvent(this, e));
             return;
         }
     }
 }
Example #2
0
 private void listen()
 {
     try
     {
         UdpReceiveResult result  = this._client.ReceiveAsync().GetAwaiter().GetResult();
         byte[]           bytes   = result.Buffer;
         UDPPackage       package = UDPPackage.Parse(bytes);
         IPEndPoint       ip      = result.RemoteEndPoint;
         if (!package.Broken)
         {
             this.Event_GetPackage?.Invoke(new UDPEvent(this, package, ip));
         }
         else
         {
             this.Event_RecieveBrokenPackage?.Invoke(new UDPEvent(this, package, ip));
         }
     } catch (Exception e)
     {
         lock (this.locker) this._listenThread = null;
         this.Event_ConnectionError?.Invoke(new UDPEvent(this, e));
         return;
     }
     listen();
 }
Example #3
0
 public UDPEvent(UDPSocket client, UDPPackage package)
 {
     this.Client  = client;
     this.Package = package;
 }
Example #4
0
 public UDPEvent(UDPSocket client, UDPPackage package, IPEndPoint getFromEndPoint)
 {
     this.Client          = client;
     this.Package         = package;
     this.GetFromEndPoint = getFromEndPoint;
 }