Python 2.7 使用套接字接收消息时,使用conn:AttributeError:_退出
我有一个用python编写的脚本,需要通过套接字与另一个用java编写的脚本通信,python脚本只接收消息,我正在使用一个名为mininet的库来完成我的工作,显然它不能在python3上运行,所以我需要使用python2。我目前使用python2.7.15+ 我在堆栈上搜索了一下,在我的上下文中没有发现这个问题,很明显with语句没有实现上下文管理器,出于某种原因,我需要在套接字功能上使用它(我对python非常不熟悉,所以如果这种情况很容易用基本的python知识解释的话,请原谅我) 这个函数是在一个主函数上调用的,这个主函数需要等待来自java中另一个脚本的命令,在确定这七条可能消息之间的消息之后,他中断并继续代码。这里需要检查哪些消息并继续执行代码,但实际情况是:当调用函数时,代码块会一直阻塞,直到接收到连接,而当另一个脚本连接时,python脚本会抛出一个错误,指出该行有问题:Python 2.7 使用套接字接收消息时,使用conn:AttributeError:_退出,python-2.7,sockets,Python 2.7,Sockets,我有一个用python编写的脚本,需要通过套接字与另一个用java编写的脚本通信,python脚本只接收消息,我正在使用一个名为mininet的库来完成我的工作,显然它不能在python3上运行,所以我需要使用python2。我目前使用python2.7.15+ 我在堆栈上搜索了一下,在我的上下文中没有发现这个问题,很明显with语句没有实现上下文管理器,出于某种原因,我需要在套接字功能上使用它(我对python非常不熟悉,所以如果这种情况很容易用基本的python知识解释的话,请原谅我) 这个
with conn:
完全错误是:
Socket created
Socket now listening
Traceback (most recent call last):
File "script_initial.py", line 669, in <module>
teste.run_topo()
File "script_initial.py", line 643, in run_topo
self.start_socket()
File "script_initial.py", line 584, in start_socket
with conn:
AttributeError: __exit__
已创建套接字
套接字正在侦听
回溯(最近一次呼叫最后一次):
文件“script_initial.py”,第669行,在
teste.run_topo()
文件“script_initial.py”,第643行,在run_topo中
self.start_套接字()
文件“script_initial.py”,第584行,在start_套接字中
康涅狄格州:
AttributeError:\uuu退出__
在Python 2.7中,套接字
对象不支持上下文管理器接口。因此,不能将with
语句与socket
对象一起使用,必须在使用完close
方法后显式调用它
更改:
conn, addr = s.accept()
with conn:
print('Connected by', addr)
data = conn.recv(1024)
...
致:
使用“
”和“I have no”\uuuuu enter\uuuuuuuuuuu或“I have no\uuuuuuuuu exit\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。相反,代码必须使用更手动的方法,例如显式地socket.close
(尽管注意GC也会自动触发关闭)。此外,break
的位置似乎可疑。.它解决了问题,同时用户2864740的预约也是正确的
conn, addr = s.accept()
with conn:
print('Connected by', addr)
data = conn.recv(1024)
...
conn, addr = s.accept()
print('Connected by', addr)
data = conn.recv(1024)
...
conn.close()