📅  最后修改于: 2023-12-03 14:55:51.518000             🧑  作者: Mango
在 C# 中,检查连接的两种方式包括:
System.Net.NetworkInformation.Ping
类System.Net.Sockets.TcpClient
类使用 Ping
类可以检查主机是否在线。以下是一个示例代码片段:
using System.Net.NetworkInformation;
string hostNameOrAddress = "www.google.com";
Ping ping = new Ping();
PingReply reply = ping.Send(hostNameOrAddress);
if (reply.Status == IPStatus.Success)
{
Console.WriteLine($"The host {hostNameOrAddress} is online.");
}
else
{
Console.WriteLine($"The host {hostNameOrAddress} is not online.");
}
这段代码会发送一个 ICMP 请求到指定主机,并等待响应。如果响应是成功的(即 Status
属性为 IPStatus.Success
),那么主机在线。
使用 TcpClient
类可以检查端口是否开放。以下是一个示例代码片段:
using System.Net.Sockets;
string hostNameOrAddress = "www.google.com";
int port = 80;
TcpClient client = new TcpClient();
try
{
client.Connect(hostNameOrAddress, port);
Console.WriteLine($"The port {port} on host {hostNameOrAddress} is open.");
}
catch (Exception)
{
Console.WriteLine($"The port {port} on host {hostNameOrAddress} is not open.");
}
finally
{
client.Close();
}
这段代码会尝试在指定主机和端口上创建一个 TCP 连接。如果连接成功,那么该端口开放。
注意,在使用 TcpClient
类检查端口是否开放时,你需要确保你的代码是在异步线程上运行的。否则,该操作可能会阻塞主线程。