我想在同一台物理计算机上运行两个相同服务器的实例。这两个服务器将侦听相同的端口,例如12345.我正在尝试在127.0.0.1上运行一个服务器,在127.0.0.2上运行另一个服务器。这两个服务器基本上使用相同的端口发送和接收消息,但在不同的环回地址上运行。我不知道我是否正确设置此测试环境?不知何故,我无法设置此测试环境。我正在使用java来开发服务器。
答案 0 :(得分:1)
这正是我NanoHTTPD的分支用于:
https://github.com/gitgrimbo/nanohttpd/commit/9535d1b6b4c1bbc927d390327018882d84df959f
Added ability to specify hostname to bind to.
For example:
java NanoHTTPD -d wwwroot1 -h 127.0.0.1
java NanoHTTPD -d wwwroot2 -h 127.0.0.2
java NanoHTTPD -d wwwroot3 -h 127.0.0.3
And hosts file:
127.0.0.1 www1.example.com
127.0.0.2 www2.example.com
127.0.0.3 www3.example.com
特别是第225行(在上面的提交链接中):
myServerSocket.bind(new InetSocketAddress(hostname, port));
此代码与上面的说明相结合,展示了如何在几个环回地址上运行服务器,所有这些都使用相同的端口(默认情况下为80,但可以是您选择的任何一个)。
答案 1 :(得分:1)
如果指定两个不同的接口,则可以将两个服务器绑定到同一个端口:
ServerSocket s1 = new ServerSocket(port, 500, InetAddress.getByName("127.0.0.1"));
ServerSocket s2 = new ServerSocket(port, 500, InetAddress.getByName("127.0.0.2"));