小编Cha*_*e B的帖子

Python 套接字 connect() 与 connect_ex()

我想看看 Python 中的这两个函数。我做了一些研究,遇到了这样的事情:

socket.connect_ex(地址)

与 connect(address) 类似,但返回一个错误指示符,而不是为 C 级 connect() 调用返回的错误引发异常(其他问题,例如“找不到主机”,仍可能引发异常)。如果操作成功,则错误指示符为 0,否则为 errno 变量的值。这对于支持异步连接等很有用。

我完全明白这一点。我写了一个简单的端口扫描器来测试效率并得到有趣的结果:

[*] start scanning on host 127.0.0.1 for ports range(0, 65535) with 
method(connect)
[*] method connect finished in 0:00:12.253352
[*] start scanning on host 127.0.0.1 for ports range(0, 65535) with 
method(connect_ex)
[*] method connect_ex finished in 0:00:06.839319
Run Code Online (Sandbox Code Playgroud)

因此,connect_ex似乎效率是connect. 如果涉及到语法,唯一的区别是当它无法连接时,connect您将其包围try except并捕获错误,并connect_ex检查结果是否为 0 或 errno。一切都清楚了,但我的问题是为什么connect_exconnect? 到底是什么原因导致了这种行为?

python sockets networking

7
推荐指数
1
解决办法
8180
查看次数

标签 统计

networking ×1

python ×1

sockets ×1