В данном примере рассмотрено использование команды Ping из пространства имен System.Net.NetworkInformation.
Исходники по языку программирования CSharp
Если вы столкнулись с проблемой и хотите поделиться своим опытом, знаниями или у вас есть интересная статья с иностранного сайта, предложение новой темы, статью которую Вы хотите видеть в ближайшем будущем, расскажите нам об этом и мы обязательно поделимся этими знаниями со всеми. Возможно, для других ваши знания, опыт и советы окажутся очень ценными и помогут вовремя найти правильный выход или не совершить ошибок.Так же если у вас есть предложение о сотрудничестве, пожелания, указать на нарушения сайта или просто сказать слова благодарности, все это вы можете сделать через форму обратной связи. Читать дальше
Показаны сообщения с ярлыком Ping. Показать все сообщения
Показаны сообщения с ярлыком Ping. Показать все сообщения
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 минут.
Copyright © 2011-2015 Справочник по C#. Все права защищены.

