python套接字客户端如何在一台主机上运行时拥有任意IP?

时间:2015-05-13 10:13:24

标签: python sockets

我正在尝试学习python中的套接字编程。
我已经编写了一个服务器,它首先通过IP识别客户端,我想在localhost上测试程序,但不知道如何为客户端提供不同的IP。据我所知,当我们使用connect()方法时,我们只指定目标的主机和端口,但是如果我们想选择我们的呢?有什么办法吗?

HOST = '127.0.0.1'
PORT = 8018
TIMEOUT = 5
BUF_SIZE = 1024


class WhatsUpClient():

    def __init__(self, host=HOST, port=PORT):
        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.sock.connect((host, port))
        logging.info('Connecting to %s:%s' % (host, port))
        while 1:
            try:
                buf = self.sock.recv(BUF_SIZE)
                sys.stdout.write(buf)
                cmd = raw_input()
                if cmd.strip() == '!q':
                    sys.exit(1)
                self.sock.send(cmd)
            except:
                self.sock.close()

    def run(self):
        pass

1 个答案:

答案 0 :(得分:0)

IP地址对于整个世界来说必须是唯一的(除了少数例外),因此您不能随意选择并使用它。

您可以查看private networks(192.168.x.x和10.x.x.x)。设置此方法的最简单方法是在您的计算机上安装虚拟机(如VirtualBox)。查看活动网络接口时,您会看到VM添加了一些虚拟网卡。

如果您在虚拟PC上运行客户端,它将获得一个特殊的私有IP地址。

您也可以在云中租用一台PC并在那里运行您的代码,但这需要花钱。

另一个选择是询问系统管理员他们是否有任何可用于测试的免费IP地址,但通常他们没有,或者他们不想告诉你,因为设置它有点复杂。 / p>