我对linux环境很新,任何帮助/反馈都将不胜感激。我实际上正在尝试开发客户端 - 服务器(MULTICAST)程序,因此,我想测试一个客户端向不同服务器发送信息(一对多关系)。因此,我想在一台计算机上用不同的IP地址模拟linux中不同的服务器端。
答案 0 :(得分:1)
您是否尝试使用其他端口?我自己没有尝试过,但也许这可以帮助你在中期。
答案 1 :(得分:0)
如果您真的是多播,则无需担心物理主机特定的IP:您需要做的就是确保所有程序(客户端和服务器)使用相同的多播组地址。然后他们都应该自动看到对方的流量。
在这种情况下,没有什么可以阻止您在运行服务器的同一台计算机上运行多个客户端。
答案 2 :(得分: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 up
ifconfig eth0:1 192.168.5.13 netmask255.255.255.0 up
在其中一个IP上运行您的服务器,并将客户端分发到您的所有别名
答案 3 :(得分:0)
如果没有足够的硬件,请使用以下任一方法:
请注意#1的套接字选项的语义会根据操作系统而改变;对于#2,只有一些虚拟机支持多播,请参阅供应商了解详细信息。
http://msdn.microsoft.com/en-us/library/windows/desktop/ms739161(v=vs.85).aspx
最终,由于主机如何管理多播组的特定工件,您必须使用不同的计算机进行测试。例如,您可以创建仅发送成员资格,这将阻止主机上的每个其他应用程序。还要考虑互联网,小写“I”,将引入有关群组加入和传播延迟以及您的应用程序可能需要了解的丢弃的更多工件。
答案 4 :(得分:0)
您可以借助IP别名为同一台计算机创建多个IP。正如刚才提到的。 但是要在一台PC上创建多个服务器,如果要使用网络模拟所有服务器行为,则每个服务器必须有不同的端口。
我的意思是对于一个端口多播流量总是这样,并且PC中的某个进程将接收数据包并且必须服务于PC中的所有服务器,意味着您只有一个数据包且所有服务器都在接收本地操作
但真正模拟的是你在1台PC上有多台服务器,而且所有服务器都是从网络而不是从本地进程接收多播流量。
我的解决方案:您保留服务器的号码== PC上的端口号。客户端同时通过所有端口发送组播流量,PC端的所有服务器都将从网络的相应端口接收组播数据包。
如果我的理解错误,请纠正我。