确定服务器是否正在侦听给定端口

Nat*_*ate 4 .net c# sockets networking tcp

我需要轮询服务器,该服务器运行一些专有软件,以确定此服务是否正在运行.使用wireshark,我已经能够缩小其使用的TCP端口,但似乎流量已加密.

在我的情况下,可以肯定的是,如果服务器正在接受连接(即telnet serverName 1234),则服务已启动且一切正常.换句话说,我不需要进行任何实际的数据交换,只需打开一个连接然后安全地关闭它.

我想知道如何使用C#和套接字来模拟它.我的网络编程基本上以WebClient结束,所以非常感谢这里的任何帮助.

Cha*_*ion 8

这个过程实际上非常简单.

using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
{
    try
    {
        socket.Connect(host, port);
    }
    catch (SocketException ex)
    {
        if (ex.SocketErrorCode == SocketError.ConnectionRefused) 
        {
            // ...
        }
    }
}
Run Code Online (Sandbox Code Playgroud)