两个应用程序必须绑定到同一端口

两个应用程序必须绑定到同一端口

我有两个应用程序使用相同的 TCP 端口(和相同的接口)作为监控控制台,而不是应用程序的主端口。我对使用该端口不感兴趣,并且我无法更改 SO_REUSEADDR 或更改端口的源代码。

如何才能让这两个应用程序在同一个操作系统上运行?

答案1

如果内核允许这样做,它将无法知道哪个传入连接应该连接到哪个应用程序。

您应该让应用程序绑定到不同的 IP。大多数应用程序都可以执行此操作(但大多数应用程序也允许更改其端口...)

如果应用程序不允许这样做,我会在不同的网络堆栈上运行它们(两个不同的物理机,或者虚拟机,也许是docker)。

答案2

我自己没有测试过这个,但是对于 Linux,你可以为你的 NIC 设置两个不同的 IP 并使用这个bindhack

https://superuser.com/questions/241178/how-to-use- Different-network-interfaces-for- Different-processes

http://www.ryde.net/code/bind.c.txt

否则,可以使用十六进制编辑器更改二进制文件中的硬编码端口号。反汇编或在调试器中运行可能有助于找到更改它的正确位置。

相关内容