public void Stop() { IsRuning = false; UdpServer.Close(); UdpServer.Dispose(); UdpServer = null; }
protected virtual void Dispose(bool disposing) { if (!disposed) { if (disposing) { if (UDPServerThread != null) { try { _RequestStop = true; Delay(100); UDPServerThread.Abort(); UDPServerThread = null; } catch (Exception e1) { } } if (UdpServer != null) { UdpServer.Close(); } } disposed = true; } }
private static void Main() { //NetBase.DebugInfoReceived += (i) => Console.WriteLine(i); UdpServer sv = new UdpServer(); sv.AddNetEventsFromAssembly(Assembly.GetExecutingAssembly()); if (!sv.StartServer(7235)) { throw new Exception("Server failed to start!"); } for (ushort i = 0; i < 1; ++i) { UdpClient cl = new UdpClient(); #if DEBUG cl.DropChance = 0.01; #endif cl.AddNetEventsFromAssembly(Assembly.GetExecutingAssembly()); cl.ClientDisconnected += (c) => Console.WriteLine("Client Disconnected!"); if (!cl.VerifyAndListen(7235)) { throw new Exception("Client failed to start!"); } cl.SendF(0, PacketFlags.Reliable, 0, i); } while (Console.ReadKey().Key != ConsoleKey.Escape) { } sv.Close(); }
void OnDestroy() { server.Close(); }
public void Close() { udp.DataReceived -= Udp_DataReceived; udp?.Close(); }
/// <summary> /// Sends DMX data to a Art-Net node. /// </summary> /// <param name="BroadcastAdress">The broadcast adress for the transmission.</param> /// <param name="Universe">The DMX universe to be addressed.</param> /// <param name="Data">The DMX data to be sent.</param> /// <param name="DataLength">Length of the data.</param> public void SendDMX(string BroadcastAdress, short Universe, byte[] Data, int DataLength) { if (UdpServer != null) { byte[] packet = new byte[(0x11 + DataLength) + 1]; Buffer.BlockCopy(this.ArtNetHeader, 0, packet, 0, this.ArtNetHeader.Length); packet[8] = Convert.ToByte(this.LoByte(0x5000)); packet[9] = Convert.ToByte(this.HiByte(0x5000)); packet[10] = 0; //ProtVerHi packet[11] = 14; //ProtVerLo packet[12] = 0; //Sequence packet[13] = 0; //Physical packet[14] = Convert.ToByte(this.LoByte(Universe)); packet[15] = Convert.ToByte(this.HiByte(Universe)); packet[0x10] = Convert.ToByte(this.HiByte(DataLength)); packet[0x11] = Convert.ToByte(this.LoByte(DataLength)); try { Buffer.BlockCopy(Data, 0, packet, 0x12, DataLength); } catch (Exception exception1) { Log.Exception("A exception occured in the ArtNet Engine class.", exception1); //Error(exception1, new EventArgs()); } lock (UdpServerLocker) { if (UdpServer != null) { try { UdpServer.Send(packet, packet.Length, BroadcastAdress, 0x1936); SendExceptionCnt = 0; } catch (Exception E) { SendExceptionCnt++; if (SendExceptionCnt > 10) { try { Log.Exception("More than 10 consuecutive transmissions of ArtNet data have failed. ArtNet enigine will be disabled for the session.", E); } catch { } if (UdpServer != null) { try { UdpServer.Close(); } catch { } UdpServer = null; } } else { Log.Exception("A exception has occured when sending ArtNet data.", E); } } } } } }