gpt4 book ai didi

java - 将 TCP 端口流量重定向到其他端口,以便 Java 应用程序知道使用了哪个端口

转载 作者:太空宇宙 更新时间:2023-11-04 09:37:05 26 4
gpt4 key购买 nike

我正在运行一个 Java 服务器应用程序(如果有人知道的话是 Bungeecord),我正在为其编写插件代码。 Bungeecord 服务器在端口 A 上运行,但需要能够连接到端口 A 和 B 上的服务器。因此,如果连接到端口 A,一切都应该按预期工作。但是,如果连接到 B,则 B 的输入应发送到端口 A,而通过 B 连接的输出需要从端口 B 发送。

问题是我的 Bungeecord Java 插件需要知道客户端是通过 A 还是 B 连接的。

我不能简单地创建两个 ServerSocket 实例(一个用于端口 A,一个用于端口 B),因为这需要修改 Bungeecord(这不是我的项目)。这样做会非常耗时。

是否有可能在 linux (debian) 和 Java 上解决这个问题,或者我是否需要创建自己的轻量级代理应用程序来为 Java 插件提供信息,无论特定连接是连接到 A 还是 B?

最佳答案

从 TCP 层,仅向应用程序提供有关它实际接收连接的端口的信息,在您的情况下就是端口 A。您可以使用像 netcat 这样的工具作为某种“漏斗”,这样到端口 A 和端口 B 的连接总是在端口 A 结束,但 TCP 层不会携带任何相关信息。

如果您需要在服务器应用程序中分离所有在同一端口接收的多个连接类型,您有以下选择:

  • 在应用层嵌入有关连接类型的信息。
  • 通过 端口(即客户端的端口)区分连接。 (那么您可能会也可能不会使用 netcat。不过,您仍然可以使用数据包重写/端口地址转换。)

关于java - 将 TCP 端口流量重定向到其他端口,以便 Java 应用程序知道使用了哪个端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25489113/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com