Exemple #1
0
 public void Stop()
 {
     IsRuning = false;
     UdpServer.Close();
     UdpServer.Dispose();
     UdpServer = null;
 }
Exemple #2
0
 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;
     }
 }
Exemple #3
0
    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();
    }
Exemple #4
0
 void OnDestroy()
 {
     server.Close();
 }
Exemple #5
0
 public void Close()
 {
     udp.DataReceived -= Udp_DataReceived;
     udp?.Close();
 }
Exemple #6
0
        /// <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);
                            }
                        }
                    }
                }
            }
        }