从this question开始,我试着按照Maksim Skurydzin的答案(截至太平洋标准时间2020-01-03@6:33的第三个答案)进行回答,但我得到了^{
我正在尝试使用TRY-EXCEPT来捕获使用套接字时的超时。我从IBM tutorial "Sockets programming in Python"中的“清单11.简单Python数据报echo服务器”开始:
import socket
dgramSock = socket.socket( socket.AF_INET, socket.SOCK_DGRAM )
dgramSock.bind( ('', 23000) )
while 1:
msg, (addr, port) = dgramSock.recvfrom( 100 )
dgramSock.sendto( msg, (addr, port) )
我只是添加了几行来得到这个:
import socket
from time import sleep
dgramSock = socket.socket( socket.AF_INET, socket.SOCK_DGRAM )
dgramSock.bind(('', 62020))
dgramSock.setblocking(0)
while 1:
try:
msg, (addr, port) = dgramSock.recvfrom(64)
print msg
dgramSock.sendto(msg, (addr, port))
except timeout:
sleep(.001)
当我尝试运行它时,会出现上述错误。当我将except timeout:
更改为except:
时,这就是我希望它的工作方式,但是Python文档不鼓励以这种方式使用except
(8.3.处理异常…”“最后一个exception子句可能会省略异常名称作为通配符。使用时要格外小心,因为这样很容易掩盖真正的编程错误!”)。为了遵循这个建议,我找到了(上面提到的)答案,这个答案看起来非常合适,我认为我正确地遵循了它。我做错了什么
目前没有回答
相关问题 更多 >
编程相关推荐