连接端口



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

所以我需要得到有人试图连接的端口。

例如:如果我在浏览器中打开localhost:4444,我想得到4444作为字符串或int。

它不需要是C#。很好,但也可以用其他语言。

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

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

通过大量的工作,您可能会发现如何使用tcpdump命令行实用程序和/或其底层的libpcap运行库来实现这一点。该子系统在驱动程序级别截获网络消息并报告它们。你可以写一大块代码,注意到一个传入的连接请求,并启动一个服务器(用你选择的语言编写(来监听该端口

但是,服务器不会及时启动以处理tcpdump或libpcap检测到的请求。相反,rPi上的操作系统会立即拒绝它,并出现ECONNREFUSED操作系统错误。在rPi有机会启动服务器后,您将不得不依靠客户端软件重试连接。但是像网络浏览器这样的客户端软件不会自动重试那些被拒绝的连接。

你也许可以做到这一点,但它永远是一个脆弱的解决方案,也是一个痛苦的破解。你最好重新思考一下这个系统的设计。您应该在您认为客户端将使用的任何端口上运行服务器(侦听器(。

我必须提到你提出的方法的安全隐患。如果你在随机端口上接收到消息后启动服务器,那么网络犯罪只需运行nmap就可以使你的机器崩溃。

最新更新