我想在同一台物理机上运行同一台服务器的两个实例。这两台服务器将监听相同的端口,比如 12345。我正在尝试在 127.0.0.1 上运行一台服务器,而在 127.0.0.2 上运行另一台服务器。这两个服务器基本上将使用相同的端口发送和接收消息,但在不同的环回地址上运行。我不知道我是否在正确的路径上设置这个测试环境?不知何故,我无法设置这个测试环境。我正在使用java开发服务器。
问问题
1475 次
2 回答
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,但您可以选择任何一个)。
于 2013-04-04T22:59:09.460 回答
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"));
于 2013-04-05T01:08:20.343 回答