首页 文章

检查客户端端口是否已打开并转发[C#,ASP.NET]

提问于
浏览
2

检查客户端是否有 open port 的最佳方法是什么,如果它是 forwarded properly

该应用目前的工作方式如下:

  • 客户端为传入连接创建一个套接字,并希望通知每个人他的开放端口 . 客户端还尝试使用UPnP设置端口转发(但它并不总是存在并启用) .

  • 客户端然后将其端口发送到"central"已知服务器 .

  • Server should check if the port is open (forwarded properly) and return its status.

  • 如果存在转发问题,客户端将通知用户 .

目标是在服务器上保存IP端口信息,以便能够将其提供给其他客户端 . 我可以尝试从服务器到客户端打开 Socket 并查看它是否失败,但有更简单(更快)的方法吗?

例如,这个网站做的是这样的:http://www.canyouseeme.org/

1 回答

  • 1

    不,没有 .
    要检查是否可以 Build 连接,您需要尝试 Build 连接:)使用 Socket 是一种明智的方法 .

    您可以通过检查计算机是否具有公共IP地址或本地IP地址来跳过某些客户端的此步骤 . 仍然存在公司防火墙等可能性,因此尝试打开连接是最安全的方法 .

    使用ICMP回应请求(ping)不是一种选择,因为ICMP是与TCP(或UDP)不同的协议,它没有端口号的概念 . Ping可用于确定IP地址是否可访问,但这对您的案例没有任何附加 Value .

相关问题