2012-06-05 20 views
3

我正在尝试编写一个python程序,该程序会产生多个客户端与网络上的一台服务器对话。我的问题是我需要做什么来模拟每个客户端的不同IP地址?套接字:使用一台机器/网卡在python中模拟多个客户端

我现在正在使用MAC OSX Lion和Python 2.6。

我已经开发了可以接受多个套接字的服务器端。我想避免为每个客户端安装一台机器。任何提示/暗示为新手将不胜感激。

+1

为什么你想要不同的IP地址?您可以将多个客户端从同一个IP连接到一个套接字。 – schlamar

+0

@ ms4py也许他正在测试一些特别依赖于不同IP地址的东西,而不仅仅是“(ip,port)”组合。 – JAB

回答

-1

http://docs.python.org/library/socket.html#socket.create_connection

If supplied, source_address must be a 2-tuple (host, port) for the socket to bind to as its source address before connecting.

我认为应该这样做。

+0

不要假设,测试你的答案。这只适用于物理可用的IP,否则会引发'socket.gaierror:[Errno 11004] getaddrinfo失败'。 – schlamar

+0

@ ms4py Huh,所以它利用下方的socket.bind(),并且只接受有效的本地地址(至少取决于底层的实现)......所有考虑的事情都是合理的,就像绑定套接字一个不是本地的地址意味着你永远不会得到任何回报,因为服务器发回的数据将被定向到非本地IP地址,所以创建者可能认为这将是不受欢迎的行为,但它似乎是在文档中应该注意的事项。 – JAB

1

尽管这是一个老问题,但它仍然会出现在谷歌...

如前所述,基本上它会从接收到连接的IP,并分配下一个可用的端口...所以用一个标准的套接字..你将最终得到一堆来自同一个IP的不同端口的连接。

亲自到我公司更容易一旦你有了客户端生成创建客户端脚本,将生成的客户端,你需要的金额(我用1000+客户从单一的Python脚本)..

,让脚本为每个客户端生成一个IP ..如果你正确处理你的连接对象..你可以随时引用你想要的客户端..

所以最后,你有所有的客户来自网络中的同一台计算机或另一台计算机,但您只需拥有可随测试生成的IP地址的变量,您可以使用该地址进行测试。只需几行即可将生成的IP地址用作对套接字ob的引用JECT。


如果你想要的东西IP具体的工作就像只允许来自特定子网的连接..只需在连接时产生的假IP地址,并使用它,就好像它是真正的一个。

如果你只是想拥有多个客户端,根本不需要生成IP地址,因为所有东西都是不同的端口。

相关问题