Việc sử dụng ping trong C # đạt được bằng cách sử dụng phương thức Ping.Send(System.Net.IPAddress)
chạy yêu cầu ping đến địa chỉ IP hoặc URL được cung cấp (hợp lệ) và nhận được phản hồi được gọi là Gói giao thức thông báo điều khiển Internet (ICMP) . Gói tin chứa một tiêu đề 20 byte chứa dữ liệu phản hồi từ máy chủ đã nhận được yêu cầu ping. Không System.Net.NetworkInformation
gian tên .Net framework chứa một lớp được gọi PingReply
có các thuộc tính được thiết kế để dịch ICMP
phản hồi và cung cấp thông tin hữu ích về máy chủ pinged như:
- IPStatus : Lấy địa chỉ của máy chủ sẽ gửi phản hồi tiếng vọng Giao thức thông báo điều khiển Internet (ICMP).
- IPAddress : Lấy số mili giây được thực hiện để gửi yêu cầu phản hồi Giao thức thông báo điều khiển Internet (ICMP) và nhận thông báo phản hồi ICMP tương ứng.
- RoundtripTime (System.Int64) : Nhận các tùy chọn được sử dụng để truyền trả lời cho yêu cầu lặp lại Giao thức bản tin điều khiển Internet (ICMP).
- PingOptions (System.Byte []) : Nhận bộ đệm dữ liệu nhận được trong tin nhắn trả lời vọng lại Giao thức thông báo điều khiển Internet (ICMP).
Sau đây là một ví dụ đơn giản sử dụng WinForms
để chứng minh cách hoạt động của ping trong c #. Bằng cách cung cấp địa chỉ IP hợp lệ trong textBox1
và nhấp chuột button1
, chúng tôi đang tạo một phiên bản của Ping
lớp, một biến cục bộ PingReply
và một chuỗi để lưu trữ địa chỉ IP hoặc URL. Chúng tôi gán PingReply
cho Send
phương thức ping , sau đó chúng tôi kiểm tra xem yêu cầu có thành công hay không bằng cách so sánh trạng thái của câu trả lời với IPAddress.Success
trạng thái thuộc tính . Cuối cùng, chúng tôi trích xuất từ PingReply
thông tin chúng tôi cần để hiển thị cho người dùng, được mô tả ở trên.
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!!");
}
}
}
}