获取连接端口

Get connected Port

我想构建一个程序,它将 运行 在我的 Raspberry Pi 上,并在我连接到它时启动进程。如果特定端口上有连接,我想 运行 特定进程。

所以我需要获取某人正在尝试连接的端口。

例如: 如果我在浏览器中打开 localhost:4444,我想获取 4444 作为字符串或整数。

不一定是C#。太好了,但也可以用其他语言。

这可能吗?我该如何实现?

任何端口号 上监听传入数据包,而不是在特定端口号上监听传入数据包,是 Linux 上的不自然行为(rPi 的 OS) 和大多数操作系统。

经过大量工作,您可能可以弄清楚如何使用 tcpdump command line utility and/or its underlying libpcap 运行time 库来完成它。该子系统在驱动程序级别拦截网络消息并报告它们。您可以编写一大堆代码来通知传入的连接请求并启动服务器(以您选择的语言编写)以侦听该端口。

但是,服务器无法及时启动来处理 tcpdump 或 libpcap 检测到的请求。相反,树莓派上的 OS 会立即拒绝它并返回 ECONNREFUSED OS 错误。在 rPi 有机会启动服务器后,您将不得不依赖客户端软件重试连接。但是网络浏览器等客户端软件不会自动重试那些被拒绝的连接。

您也许能够完成这项工作,但它始终是一个脆弱的解决方案和一个悲惨的 hack。你最好重新考虑这个系统设计。您应该 运行 服务器(侦听器)在您认为您的客户将使用的任何端口上。

我必须提到您提出的方法的安全隐患。如果您在随机端口上收到消息后启动服务器,网络蠕虫只需 运行在其上 nmap 即可使您的计算机崩溃。