使用connect_ex((host,port))方法建立与远程端口的连接时。 为什么是双括号(())
答案 0 :(得分:1)
connect
/ connect_ex
的参数通常只是一个"地址"。地址的解释因地址族而异。这在socket
文档中有解释:
https://docs.python.org/3.5/library/socket.html?highlight=socket#socket-families
根据创建套接字对象时指定的地址系列,自动选择特定套接字对象所需的地址格式。
对于AF_INET
系列,地址恰好包含host
和 a port
,因此需要提供两件一个参数槽中的信息。在python中执行此操作的常用方法是将两个部分提供为tuple
。创建元组的语法是用元组分隔两个项目,但是在参数列表中,你必须将这两个项目括在一对额外的括号中。
那是:
connect_ex(host, port) # WRONG
不起作用,因为会有两个参数,但该方法只需要一个。这些中的任何一个都可以工作:
address = host, port # Comma indicates a tuple
connect_ex(address)
connect_ex((host, port)) # () to distinguish as a tuple in the argument list