使用环回来测试环境

时间:2013-04-04 22:54:06

标签: java tcp ip loopback

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

2 个答案:

答案 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"));