如果我想在无需设置网络的情况下测试一组多播 IP 程序(发送方/接收方),可以在同一个机器上完成吗?如果是这样,需要设置什么或以不同的方式完成?
4 回答
您可能已经想通了(因为这个问题现在已经有 2 年了)但是要在单个主机上进行多播,您只需要做两件事:(1)确保您的接收多播套接字设置了 SO_REUSEADDR(这样多个进程可以绑定相同的多播地址)和(2)确保您的发送多播套接字设置了 IP_MULTICAST_LOOP(以便数据包将“循环回”到同一系统上的接收器)。如果您的应用程序使用单个套接字来发送和接收多播,您将在其上设置两个套接字选项。
int recv_s = socket(AF_INET, SOCK_DGRAM, 0);
int send_s = socket(AF_INET, SOCK_DGRAM, 0);
u_int yes = 1;
setsockopt(recv_s, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes));
setsockopt(send_s, IPPROTO_IP, IP_MULTICAST_LOOP, &yes, sizeof(yes));
我想说最简单的事情是在你的 NIC 上设置多个 IP。只要确保你听的是具体地址而不是全部。
高温高压
这可能不是您想要的,但是当我编写使用一堆广播和套接字连接等的代码时,我只是在 VMWare 中创建了两个虚拟机,从 live CD 启动它们,然后上传我的代码。如果您的代码在 Windows 中运行,只需安装两次 Windows。VMWare 将机器放在同一个子网中,因此它们之间的通信工作得很好,广播等等。(我假设多播,尽管我没有直接的经验。)
一些网络设置是必要的。如果您不想创建物理网络,您可以将多个 IP 地址添加到单个网卡。如果您的机器有多个网卡,您甚至可以只用两张网卡和一个集线器创建一个网络。此外,如果您的机器具有无线接口和有线接口,那么通过无线和有线接口将您的机器连接到无线集线器也将为您提供网络。
希望这些想法之一有所帮助。帕特奥