c# - 确定服务器是否正在监听给定端口

标签 c# .net networking sockets tcp

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

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

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

最佳答案

过程其实很简单。

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

关于c# - 确定服务器是否正在监听给定端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2836674/

相关文章:

c# - 是否可以用多个 Http 属性装饰 ASP.NET WEB API Controller 方法

c# - 如果它是一个结构数组,foreach 是否复制每个元素?

apache - 将 HTTPS 443 端口重定向到其他服务器上的多个站点

c++ - 当 epoll 发出事件信号时,recv() 调用如何阻塞?

c++ - 线程同步——临界区还是互斥体?

c# - 性能缓慢 - 单击重定向链接后运行 ASP .NET ASPNET_WP.EXE 和 CSC.EXE

c# - 如何在运行时知道属于结构体的 char 数组的长度

c# - 在 C# 中通过 JSON JavaScriptSerializer 序列化批量数据?

c# - 检测列重新排序 - ColumnDisplayIndexChanged 多次引发

C#静态字段、实例构造函数