2011-09-23 89 views
1

即时通讯新的Linux环境和任何帮助/反馈将不胜感激。我实际上试图开发一个客户端服务器(MULTICAST)程序,所以,我想测试一个客户端发送信息到不同的服务器(一对多关系)。因此,我想在一台计算机上用不同的IP地址模拟不同的服务器端。模拟不同的PC在不同的IP地址在Linux环境

回答

1

您是否尝试使用不同的端口?我没有自己尝试,但也许这可以帮助你在中期。

+0

+1:可以将多个IP地址分配给一个硬件设备,但在我看来,使用多个端口更容易,更好。 – flolo

0

如果你真的在进行组播,你不需要担心物理主机特定的IP,你所需要做的就是确保所有的程序(客户端和服务器)都使用相同的多播组地址。然后他们都应该自动查看对方的流量。

在这种情况下,在同一台也运行服务器的计算机上运行多个客户端没有任何阻碍。

+0

thx为您的快速回复,我想模拟的主要原因是看服务器是否可以接收来自不同来源(客户端)的所有信息。到目前为止,我的程序在一台客户机和一台服务器上正常工作 –

0

我听起来像你想用不同的IP测试你的代码。您可以在界面上创建IP别名,并在一台计算机上模拟多个IP。

例如,如果eth0是活动的IP接口,比如说192.168.5.11,你可以给eth0:0(eth0别名)分配另一个IP,如下所示。

使用ifconfig eth0的:0 192.168.5.12 netmask255.255.255.0了

使用ifconfig eth0的:1 192.168.5.13 netmask255.255.255.0了

上的IP的一个运行服务器和分发客户端所有的别名

0

二者必选其一,当你没有足够的硬件如下:

  1. 组播环路其IP堆栈重定向出站数据包到本地再ceivers。
  2. 虚拟机。

请注意#1套接字选项的语义根据操作系统而变化;对于#2只有一些虚拟机支持多播,请参阅供应商了解详细信息。

http://msdn.microsoft.com/en-us/library/windows/desktop/ms739161(v=vs.85).aspx

虽然最终你必须用不同的机器上测试由于具体怎么文物主机管理组播组。您可以创建只发送成员资格,这将阻止主机上的其他应用程序。另外考虑一个互联网,小写字母'I',会引入关于群组加入和传播延迟以及应用程序可能需要注意的丢弃的更多人为因素。

0

您可以借助IP别名为同一台机器创建多个IP。正如刚才提到的。 但是要在一台PC上创建多台服务器,如果要模拟网络中的所有服务器行为,则必须为每台服务器使用不同的端口。

我的意思是对于一个端口多播流量总是去那个和个人电脑中的一些进程将接收数据包,并必须服务于个人电脑中的所有服务器,意味着你只有一个数据包,所有服务器正在本地接收操纵。

但真正的模拟将是你有一台PC上的多个服务器,并且所有的都是从网络接收多播流量,而不是从本地流程。

我的解决方案:您在服务器上保留号码= PC端口号。客户端同时通过所有端口发送组播流量,PC端的所有服务器都将接收来自网络相应端口的组播数据包。

如果我的理解错误,请纠正我。