Показаны сообщения с ярлыком Ping. Показать все сообщения
Показаны сообщения с ярлыком Ping. Показать все сообщения

Проверка доступности сетевого адреса

Комментариев нет:
      В данном примере рассмотрено использование команды Ping из пространства имен System.Net.NetworkInformation.

Читать далее

Ping

Комментариев нет:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Net.NetworkInformation;

namespace PingStatus
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        // Counts the pings
        private int pingsSent;
        // Can be used to notify when the operation completes
        AutoResetEvent resetEvent = new AutoResetEvent(false);

        private void button1_Click(object sender, EventArgs e)
        {
            SendPing();
        }

        private void SendPing()
        {
            System.Net.NetworkInformation.Ping pingSender = new System.Net.NetworkInformation.Ping();

            // Create an event handler for ping complete
            pingSender.PingCompleted += new PingCompletedEventHandler(pingSender_Complete);

            // Create a buffer of 32 bytes of data to be transmitted.
            byte[] packetData = Encoding.ASCII.GetBytes("................................");

            // Jump though 50 routing nodes tops, and don't fragment the packet
            PingOptions packetOptions = new PingOptions(50, true);

            // Send the ping asynchronously
            pingSender.SendAsync(txtIP.Text, 5000, packetData, packetOptions, resetEvent);
        }
        private void pingSender_Complete(object sender, PingCompletedEventArgs e)
        {
            // If the operation was canceled, display a message to the user.
            if (e.Cancelled)
            {
                MessageBox.Show("Ping was canceled...\r\n");

                // The main thread can resume
                ((AutoResetEvent)e.UserState).Set();
            }
            else if (e.Error != null)
            {
                MessageBox.Show(String.Format("An error occured: {0}{1}", e.Error, Environment.NewLine));

                // The main thread can resume
                ((AutoResetEvent)e.UserState).Set();
            }
            else
            {
                PingReply pingResponse = e.Reply;
                // Call the method that displays the ping results, and pass the information with it
                //ShowPingResults(pingResponse);
                if (pingResponse == null)
                {
                    // We got no response
                    MessageBox.Show("Нет ответа.\r\n\r\n");
                    return;
                }
                else if (pingResponse.Status == IPStatus.Success)
                {
                    // We got a response, let's see the statistics
                    MessageBox.Show(String.Format("Компьютор доступен. IP адресс {0}", pingResponse.Address));
                    return;
                }
                else
                {
                    // The packet didn't get back as expected, explain why
                    MessageBox.Show(String.Format("Неудачный запрос: {0}", pingResponse.Status));
                    return;
                }
            }
        }     

    }
}

Проверка доступности компьютера с помощью WMI

Комментариев нет:
      Если вам нужно написать программу с использованием WMI, которая подключается к удаленной машине, то перед подключением необходимо проверить – доступна ли эта машина. В случае если машина по сети не доступна (выключена или отсоединена от сети), то подключение к WMI не состоится и ваша программа сообщит об ошибке. Сама по себе ошибка не представляет большой проблемы, но перед тем как WMI вернет ее вам, пройдет довольно большой тайм-аут (около 30-60 секунд). Таким образом, если вы запустите программу, которая должна будет подключиться к 100 машинам по сети и 25 из них будут недоступны, то время выполнения, займёт от 15 до 30 минут.

Читать далее