Чтобы проверить порт на удаленном компьютере с помощью C#, вы можете использовать различные методы. Вот несколько подходов:
- Класс TcpClient: Класс TcpClient в пространстве имен System.Net.Sockets позволяет вам установить TCP-соединение с удаленным компьютером и проверить, открыт ли порт. Вы можете использовать метод Connect() и обрабатывать любые исключения, чтобы определить состояние порта.
using System;
using System.Net.Sockets;
class Program
{
static void Main()
{
string remoteIpAddress = "192.168.1.100";
int port = 80;
try
{
using (TcpClient client = new TcpClient())
{
client.Connect(remoteIpAddress, port);
Console.WriteLine($"Port {port} is open on {remoteIpAddress}.");
}
}
catch (Exception ex)
{
Console.WriteLine($"Port {port} is closed on {remoteIpAddress}. Error: {ex.Message}");
}
}
}
- Класс Socket. Класс Socket в пространстве имен System.Net.Sockets обеспечивает больший контроль над соединением сокета. Вы можете использовать метод Connect(), чтобы установить соединение и проверить его успешность.
using System;
using System.Net;
using System.Net.Sockets;
class Program
{
static void Main()
{
string remoteIpAddress = "192.168.1.100";
int port = 80;
try
{
IPAddress ipAddress = IPAddress.Parse(remoteIpAddress);
IPEndPoint remoteEndPoint = new IPEndPoint(ipAddress, port);
using (Socket socket = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp))
{
socket.Connect(remoteEndPoint);
Console.WriteLine($"Port {port} is open on {remoteIpAddress}.");
}
}
catch (Exception ex)
{
Console.WriteLine($"Port {port} is closed on {remoteIpAddress}. Error: {ex.Message}");
}
}
}
- Класс Ping: хотя порт не проверяется напрямую, вы можете использовать класс Ping в пространстве имен System.Net.NetworkInformation, чтобы определить, доступен ли удаленный компьютер. Это может дать вам представление о том, открыт ли порт или закрыт.
using System;
using System.Net.NetworkInformation;
class Program
{
static void Main()
{
string remoteIpAddress = "192.168.1.100";
try
{
Ping ping = new Ping();
PingReply reply = ping.Send(remoteIpAddress);
if (reply.Status == IPStatus.Success)
{
Console.WriteLine($"Host {remoteIpAddress} is reachable.");
}
else
{
Console.WriteLine($"Host {remoteIpAddress} is unreachable.");
}
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}