gpt4 book ai didi

python-3.x - 强制sock.accept()引发测试异常

转载 作者:行者123 更新时间:2023-12-03 11:59:13 24 4
gpt4 key购买 nike

作为一组测试的一部分,我希望server_sock.accept()引发异常(不是BlockingIOError)

server_sock = socket(family=AF_INET, type=SOCK_STREAM, proto=IPPROTO_TCP)
server_sock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
server_sock.setblocking(False)
server_sock.bind(('', 8080))
server_sock.listen(IPPROTO_TCP)

# Would like to raise an exception
server_sock.accept()

我知道我可以以某种方式修补对象以强制它,但我想模拟尽可能接近实际情况,因此实际网络/操作系统条件会引发异常,例如通过远程套接字上的某些行为。这可能吗?

最佳答案

您应该通过模拟套接字强制它。如果您搜索该代码,则可能会找到示例代码。或者,您可能想知道套接字抛出哪些异常。您可以在github上找到python和C代码。

https://github.com/python/cpython/blob/master/Lib/socket.py

https://github.com/python/cpython/blob/master/Modules/socketmodule.c

如果您想更深入些,请查看accept手册页以查看返回的错误。

http://man7.org/linux/man-pages/man2/accept.2.html

可能是特定于Linux的错误:

In addition, Linux accept() may fail if:

  EPERM  Firewall rules forbid connection.

关于python-3.x - 强制sock.accept()引发测试异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53924178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com