2

我希望测试通过LAN.

这些计算机将具有不同的 IP 地址。

我只有一台电脑。

LAN当我只有一台计算机时,如何模拟两台计算机连接并具有不同的 IP 地址?

平台:Linux。

语言:C

4

2 回答 2

2

这完全取决于您要测试什么。如果您不关心一些低级 TCP 细微差别,我认为您不需要像其他人建议的那样进入虚拟化。

请注意,套接字由端口号、协议(TCP 与 UDP)和网络接口标识。当你绑定一个套接字时,你可以指定它应该在哪个特定的网络接口上监听。但是,如果您不指定它(通常是这种情况),则套接字将绑定到给定端口上的所有接口。因此,在您的计算机上拥有两个网络接口就足够了 - 例如,一个在您的 LAN 卡上,另一个在 WLAN 卡上,或者只是环回接口(localhost又名127.0.0.1)请注意,每个接口上都有不同的 IP。您只需要确保将套接字绑定到特定 IP。您的程序的每个实例都绑定到不同的 IP。

假设您在 LAN 网卡上的 IP 是192.168.1.101. 您可以使用以下代码仅在此特定接口上侦听:

/* ... */
int ssocket;
struct sockaddr_in address;

bzero((char *)&address, sizeof(address));
address.sin_family=AF_INET;
address.sin_port=htons(12345);
inet_aton("192.168.1.101", &address.sin_addr.s_addr);
ssocket = socket(PF_INET, SOCK_STREAM, 0);
bind(ssocket, (struct sockaddr *) &address, sizeof(address));
/* ... and so on ... */

请注意,此代码将侦听192.168.1.101:12345,但不会侦听127.0.0.1:123456。您可以在应用程序中配置监听 IP 地址。然后只需将 localhost 用于一个实例,将 LAN 地址用于应用程序的另一个实例。

我很确定你也可以在 linux 上创建一个虚拟网络接口,但我从来没有做过,所以你需要自己去谷歌搜索。

于 2013-05-11T13:44:50.690 回答
1

可能是图形网络模拟器之类的东西可能有用。

于 2013-05-11T12:46:26.977 回答