python - 套接字:使用一台机器/网卡在python中模拟多个客户端

标签 python sockets client-side

我正在尝试编写一个 python 程序,它将生成多个客户端以与网络上的一个服务器通信。我的问题是我需要做什么来为每个客户端模拟不同的 IP 地址?

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

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

最佳答案

即使这是一个老问题,它仍然出现在谷歌...

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

就我个人而言,创建一个客户端脚本更容易,该脚本将生成您需要的客户端数量(我正在使用来自单个 python 脚本的 1000 多个客户端)。

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

所以最后,你的所有客户端都来自同一台机器或网络上的另一台机器,但你只是有一个随机/生成的 IP 地址的变量,你可以用它来测试..它只需要几行就可以使用生成的 IP 地址作为对套接字对象的引用。


如果您想要使用特定 IP 地址,例如只允许来自特定子网的连接。只需在连接时生成假 IP 地址并像使用真实 IP 地址一样使用它。

如果您只想拥有多个客户端,则完全不需要生成 IP 地址,因为一切都是不同的端口。


出于示例目的摘录:

for i in xrange(1, self.iCount + 1):
    if len(self.objClients) >= self.iCount:
        break

    #Generate a uid ... sID = xxxxxx+i
    if sID not in self.objClients:
        oPosData = []
        self.objClients[i] = {"id":sID, "current":0, "connected":True}

for oT in self.objClients:
    try:
        self.objClients[oT]['socket'] = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.objClients[oT]['socket'].connect((self.ServerIP, self.ServerPort))
        self.objClients[oT]['timer'] = time.time() + randint(0, 10)

关于python - 套接字:使用一台机器/网卡在python中模拟多个客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10901249/

相关文章:

python - pandas滚动窗口: variable length from start to x

python - Mailgun 邮件列表地址被退回

python - 有人可以解释在数据帧上使用循环时的直觉吗?

python - 使用 python 读取 NITF 文件

javascript - 使用浏览器(客户端)从 html 表单的输入创建文本文件

javascript - 从 Firefox 插件打开 TCP 套接字

python - 如何在日志配置文件中引用标准库?

sockets - 指定连接到 PHP CLI 套接字服务器的客户端的远程 IP 地址

logging - 如何在 StackExchange.Exceptional 中记录客户端异常?

javascript - aspx 客户端事件中的发件人对象 ID(javascript)