方法connect_ex((host,port))用于建立与远程端口的连接。为什么是双括号(())

时间:2018-05-03 05:36:19

标签: python-3.x security network-programming

使用connect_ex((host,port))方法建立与远程端口的连接时。 为什么是双括号(())

1 个答案:

答案 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