// SendSyncTestAsync
        public static async Task <string[]> SendSyncTestAsync(string macAddress, int port, int count, int interval)
        {
            // ARRANGE
            var this_MethodName = $"{nameof(MagicPacketTests)}.{nameof(MagicPacketTests.SendSyncTestAsync)}";
            var act_MethodName  = $"{nameof(MagicPacket)}.{nameof(MagicPacket.SendAsync)}";


            // OUTPUT: START
            Console.WriteLine($"[{DateTime.Now:HH:mm:ss.fff}] {this_MethodName}: START");

            // OUTPUT: Before Call
            Console.WriteLine($"[{DateTime.Now:HH:mm:ss.fff}] {this_MethodName}() --> {act_MethodName}()");


            // ACT
            var task = await MagicPacket.SendAsync(macAddress, port, count, interval);


            // OUTPUT: Returned
            Console.WriteLine($"[{DateTime.Now:HH:mm:ss.fff}] {this_MethodName}() <-- {act_MethodName}()");

            // OUTPUT: END
            Console.WriteLine($"[{DateTime.Now:HH:mm:ss.fff}] {this_MethodName}: END");


            // RETURN
            return(task);
        }
 public async Task SendAsyncMacAddressInvalidFormatTest(string macAddress)
 {
     try
     {
         // ACT & ASSERT
         await MagicPacket.SendAsync(macAddress);
     }
     catch (Exception)
     {
         throw;
     }
 }
Пример #3
0
        private void ShutdownToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ToolStripMenuItem menuItem = (ToolStripMenuItem)sender;
            String            msg      = String.Empty;

            FavoriteConfigurationElement fav = this.TreeView.SelectedFavorite;

            if (fav != null)
            {
                MagicPacket.ShutdownCommands shutdownStyle;
                if (menuItem.Equals(this.shutdownToolStripMenuItem))
                {
                    msg           = String.Format("Are you sure you want to shutdown this machine: {0}", fav.ServerName);
                    shutdownStyle = MagicPacket.ShutdownCommands.ForcedShutdown;
                }
                else if (menuItem.Equals(this.rebootToolStripMenuItem))
                {
                    msg           = String.Format("Are you sure you want to reboot this machine: {0}", fav.ServerName);
                    shutdownStyle = MagicPacket.ShutdownCommands.ForcedReboot;
                }
                else
                {
                    return;
                }

                if (MessageBox.Show(msg, "Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                {
                    try
                    {
                        if (MagicPacket.ForceShutdown(fav.ServerName, shutdownStyle, fav.Credential) == 0)
                        {
                            MessageBox.Show(AssemblyInfo.Title + " successfully sent the shutdown command.");
                            return;
                        }
                    }
                    catch (ManagementException ex)
                    {
                        Log.Info(ex.ToString(), ex);
                        MessageBox.Show("Terminals was not able to shutdown the machine remotely.\r\nPlease check the log file.");
                    }
                    catch (UnauthorizedAccessException)
                    {
                        MessageBox.Show("Terminals was not able to shutdown the machine remotely.\r\n\r\nAccess is Denied.");
                        return;
                    }
                }
            }
            else
            {
                MessageBox.Show("Terminals was not able to shutdown the machine remotely.");
            }
        }
Пример #4
0
 private void SendButton_Click(object sender, EventArgs e)
 {
     try
     {
         MagicPacket wakeUpPacket = new MagicPacket(this.MACTextbox.Text);
         int         byteSend     = wakeUpPacket.WakeUp();
         this.ResultsLabel.Text = string.Format("{0} bytes sent to {1}", byteSend, wakeUpPacket.macAddress);
     }
     catch (Exception exc)
     {
         Logging.Info("Error sending Magic Packet", exc);
         MessageBox.Show("There was an error sending the Magic Packet" + exc.Message);
     }
 }
Пример #5
0
        public static void WakeFunction(string macAddress, string ipAddress)
        {
            //set sending bites
            //buffer to be send
            MagicPacket magicPacket = CreateMagicPacket(macAddress);

            IPAddress address = IpAddressHelper.Ipv4AddressFromString(ipAddress);
            UdpClient client  = new UdpClient();

            client.EnableBroadcast = true;
            client.Connect(address, 12287);
            //now send wake up packet
            int reterned_value = client.Send(magicPacket.PacketBytes, magicPacket.PacketLength);
        }
        public void SendTest(string macAddress, int port, int count, int interval)
        {
            // ARRANGE
            var expected = count == 0 ? 0 : MagicPacketTests.GetNumberOfNetworkInterfaces();

            // ACT: Send Magic Packet
            var sent = (port < 0 && count < 0 && interval < 0) ?
                       MagicPacket.Send(macAddress) :
                       MagicPacket.Send(macAddress, port, count, interval);

            // OUTPUT
            for (int i = 0; i < sent?.Length; i++)
            {
                Debug.WriteLine($"Source IP Address[{i}] = {sent[i]}");
            }

            // ASSERT
            Assert.AreEqual(expected, sent.Length);
        }
Пример #7
0
        private static MagicPacket CreateMagicPacket(string MAC_ADDRESS)
        {
            MagicPacket magicPacket = new MagicPacket(new byte[1024]);
            int         counter     = 0;

            for (int y = 0; y < 6; y++)
            {
                magicPacket.PacketBytes[counter++] = 0xFF;
            }
            //now repeate MAC 16 times
            for (int y = 0; y < 16; y++)
            {
                int i = 0;
                for (int z = 0; z < 6; z++)
                {
                    magicPacket.PacketBytes[counter++] =
                        byte.Parse(MAC_ADDRESS.Substring(i, 2), NumberStyles.HexNumber);
                    i += 2;
                }
            }

            return(magicPacket);
        }
 public void SendMacAddressInvalidFormatTest(string macAddress)
 {
     // ACT & ASSERT
     MagicPacket.Send(macAddress);
 }
 public void WolTest() => MagicPacket.Send("E4:11:5B:AD:32:38", count: 3, interval: 1000);
        public void SendSyncTest(bool async)
        {
            // ARRANGE
            var this_MethodName = $"{nameof(MagicPacketTests)}.{nameof(MagicPacketTests.SendSyncTest)}";
            var act_MethodName  = async ?
                                  $"{nameof(MagicPacketTests)}.{nameof(MagicPacketTests.SendSyncTestAsync)}" :
                                  $"{nameof(MagicPacket)}.{nameof(MagicPacket.Send)}";

            var macAddress = "01:23:45:AB:CD:EF";
            var port       = 9;
            var count      = 2;
            var interval   = 1000;
            var error      = 100;

            var expected_count    = MagicPacketTests.GetNumberOfNetworkInterfaces();
            var expected_timespan = TimeSpan.FromMilliseconds(interval * (count - 1) * MagicPacketTests.GetNumberOfNetworkInterfaces());

            string[]        sent = null;
            Task <string[]> task = null;


            // OUTPUT: START
            Console.WriteLine($"[{DateTime.Now:HH:mm:ss.fff}] {this_MethodName}: START");

            // OUTPUT: Before Call
            Console.WriteLine($"[{DateTime.Now:HH:mm:ss.fff}] {this_MethodName}() --> {act_MethodName}()");
            Console.WriteLine();


            // GET Start Time
            var start_time = DateTime.Now;

            // ACT
            if (!async)
            {
                // NOT Async
                sent = MagicPacket.Send(macAddress, port, count, interval);
            }
            else
            {
                // Async
                task = async ? SendSyncTestAsync(macAddress, port, count, interval) : null;
            }

            // GET Timespan
            var time = DateTime.Now - start_time;


            // OUTPUT: Returned
            Console.WriteLine();
            Console.WriteLine($"[{DateTime.Now:HH:mm:ss.fff}] {this_MethodName}() <-- {act_MethodName}()");


            // Wait for complete (Async)
            if (async)
            {
                // OUTPUT: Before Wait for Complete
                Console.WriteLine($"[{DateTime.Now:HH:mm:ss.fff}] {this_MethodName}: Wait for Complete {act_MethodName}()");
                Console.WriteLine("-----");
                Console.WriteLine();

                // Wait for complete (Async)
                task.Wait();

                // OUTPUT: After Wait for Complete
                Console.WriteLine();
                Console.WriteLine("-----");
                Console.WriteLine($"[{DateTime.Now:HH:mm:ss.fff}] {this_MethodName}: {act_MethodName}() is completed.");
            }


            // OUTPUT: END (before Assertion)
            Console.WriteLine($"[{DateTime.Now:HH:mm:ss.fff}] {this_MethodName}: END (Count = {expected_count}, Timespan = {time.TotalMilliseconds})");


            // ASSERT (Count)
            Assert.AreEqual(expected_count, !async ? sent.Length : task.Result.Length);

            // ASSERT (Timespan)
            if (!async)
            {
                // NOT Async
                Assert.IsTrue((time > (expected_timespan - TimeSpan.FromMilliseconds(error))) && (time < (expected_timespan + TimeSpan.FromMilliseconds(error))));
            }
            else
            {
                // Async
                Assert.IsTrue(time < TimeSpan.FromMilliseconds(error));
            }
        }