1

我想在同一台物理机上运行同一台服务器的两个实例。这两台服务器将监听相同的端口,比如 12345。我正在尝试在 127.0.0.1 上运行一台服务器,而在 127.0.0.2 上运行另一台服务器。这两个服务器基本上将使用相同的端口发送和接收消息,但在不同的环回地址上运行。我不知道我是否在正确的路径上设置这个测试环境?不知何故,我无法设置这个测试环境。我正在使用java开发服务器。

4

2 回答 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 回答