以编程方式设置 Java 路由器端口

标签 java sockets networking firewall router

我想知道是否有一种方法可以通过互联网在客户端和服务器之间建立连接,并让它们以编程方式设置所有需要的路由器/防火墙配置更改以打开所需的外部端口进行通信。

假设服务器和客户端都已知 IP 地址,并且本示例中不需要 DNS 来查找 IP 地址。如何拥有一台服务器,在启动时配置通过防火墙的访问并告诉路由器如何将正确的通信路由到服务器。我假设客户端可能不需要这样的东西,因为它只需要知道服务器的外部 IP 地址和端口号。如果我的假设有误,请告诉我。

示例,如果我有两栋房子,房子 (A) 有服务器,房子 (B) 有客户端,并且两个站点都知道另一栋房子的外部 IP 地址是什么,并且知道它们将使用什么端口,Java 应用程序会如何执行所有的配置或者至少在windows、mac、ubuntu上做尽可能多的配置。这个想法是服务器和客户端的用户不必进行大量防火墙/路由器配置来运行应用程序。如果在示例中显示如何在服务器终止时释放连接,那就太好了。例如,当 java 服务器关闭时,它应该关闭防火墙和路由器上的端口设置。安全和干净的房子。

最佳答案

没有简单的方法可以做到这一点,因为这取决于操作系统以及计算机上运行的许多可能的防火墙应用程序。另外,如果您的应用程序崩溃,您将永远不会设置回原始参数,这在谈论安全性时可能会出现问题。

您应该尝试使用标准通信模板,而不是尝试设置自定义配置/协议(protocol)如http。这将使您的应用程序在几乎任何地方无需额外配置的情况下运行的可能性很高(因为如果您不允许 http 端口,则几乎没有互联网连接的意义)。

关于以编程方式设置 Java 路由器端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25248612/

相关文章:

java - 当用户已经点击一个按钮10次时,如何设置点击按钮的限制-android

java - 调用notifyDataSetChanged 时,具有customAdapter 的ListView 未更新?

java - 模拟鼠标事件

java - 在java中打开网站代码作为网络浏览器的错觉

networking - 如何在Powershell中隐藏网络使用的输出

java - 以生产者/消费者模式暂停消费者

java - 多个客户端-Java中的服务器

c - ICMP header 和 IP header 校验和计算

node.js - 在NestJs中使用Socket IO加入并发布到房间

Docker 网络从默认网桥迁移