C #에서 ping을 사용 Ping.Send(System.Net.IPAddress)
하려면 제공된 (유효한) IP 주소 또는 URL에 대한 ping 요청을 실행하고 ICMP (Internet Control Message Protocol) 패킷 이라는 응답을받는 메서드를 사용합니다 . 패킷에는 ping 요청을 수신 한 서버의 응답 데이터가 포함 된 20 바이트 헤더가 포함되어 있습니다. .Net 프레임 워크 System.Net.NetworkInformation
네임 스페이스에는 응답 PingReply
을 번역하고 ICMP
다음과 같이 핑된 서버에 대한 유용한 정보를 제공 하도록 설계된 속성이있는 라는 클래스가 포함되어 있습니다 .
- IPStatus : ICMP (Internet Control Message Protocol) 에코 응답을 보내는 호스트의 주소를 가져옵니다.
- IPAddress : ICMP (Internet Control Message Protocol) 에코 요청을 보내고 해당 ICMP 에코 응답 메시지를받는 데 걸리는 시간 (밀리 초)을 가져옵니다.
- RoundtripTime (System.Int64) : ICMP (Internet Control Message Protocol) 에코 요청에 대한 응답을 전송하는 데 사용되는 옵션을 가져옵니다.
- PingOptions (System.Byte []) : ICMP (Internet Control Message Protocol) 에코 응답 메시지에서 수신 한 데이터의 버퍼를 가져옵니다.
다음은 WinForms
C #에서 ping이 작동하는 방식을 보여주기 위해 사용하는 간단한 예제 입니다. 에 유효한 IP 주소를 제공 textBox1
하고를 클릭 button1
하여 Ping
클래스 의 인스턴스 , 로컬 변수 PingReply
및 IP 또는 URL 주소를 저장할 문자열을 만듭니다. PingReply
ping Send
메서드에 할당 한 다음 응답 상태를 속성 IPAddress.Success
상태 와 비교하여 요청이 성공했는지 검사합니다 . 마지막으로 PingReply
위에서 설명한대로 사용자에게 표시해야하는 정보 에서 추출 합니다.
using System;
using System.Net.NetworkInformation;
using System.Windows.Forms;
namespace PingTest1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Ping p = new Ping();
PingReply r;
string s;
s = textBox1.Text;
r = p.Send(s);
if (r.Status == IPStatus.Success)
{
lblResult.Text = "Ping to " + s.ToString() + "[" + r.Address.ToString() + "]" + " Successful"
+ " Response delay = " + r.RoundtripTime.ToString() + " ms" + "\n";
}
}
private void textBox1_Validated(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(textBox1.Text) || textBox1.Text == "")
{
MessageBox.Show("Please use valid IP or web address!!");
}
}
}
}