我有一个麻烦的问题 socket.error错误:[Errno 10048]:地址已在使用中。在使用Selenium和Python的自动化测试期间,通常只允许使用每个套接字地址(协议/ IP地址/端口)。问题非常有趣,它在一台机器(Linux)上运行正常,但在另一台机器(WindowsXP)上生成此错误。 我想补充一点,重新安装系统并重新设置后出现问题 - 使用之前的配置一切正常。 有可能我忘了吗?有没有人提出过这样的问题?
有没有人知道如何处理这个问题?
当前配置/库:
python 2.7,numpy,selenium.py
答案 0 :(得分:1)
如果多次打开/关闭套接字,它可能处于TIME_WAIT状态。这可以解释为什么它在不同的平台上的行为不同(不同的TIME_WAIT设置和TCP堆栈)。如果您正在控制套接字对象,则可以在绑定之前设置SO_REUSEADDR以解决问题。
例如:
sock = socket.socket()
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, server.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR) | 1)
您可以从命令提示符运行netstat -b
,为您提供一个包含状态和拥有进程的打开套接字列表。
答案 1 :(得分:1)
我在下面的帖子中找到了答案:
原来这个问题是Windows的限制
答案 2 :(得分:0)
有几种可能性。如果你的测试都没有可以在某个端口上监听(你不能说出什么端口),那么你的Windows机器可能正在你以前打开的端口上运行某些东西;这个新服务可能在重新安装期间出现。另一方面,如果它只是某些测试的问题,或者它有点零星,那么它可能是编程问题(在早期测试中忘记关闭套接字会干扰某个测试稍后一个)或计时问题(早期测试的套接字并不是在新的试图打开之前完成关闭)。显然,有不同的方法来解决这些问题,但我认为如果没有更多细节,我们可以提供更多帮助。
答案 3 :(得分:0)
也许您的Windows上有一个已经使用4444端口的软件,您可以尝试将Selenium设置为另一个端口并再试一次吗?