处理python套接字中的超时错误 | 您所在的位置:网站首页 › err_connection_timed_out什么问题 › 处理python套接字中的超时错误 |
from foo import * 将foo中不带前导下划线的所有名称(或仅在模块__all__属性中定义的名称)添加到当前模块中。 在上面使用from socket import *的代码中,您只是想捕获timeout,因为您已经将timeout放入了当前的名称空间。 from socket import *会引入socket中所有内容的定义,但不会添加socket本身。 try: # socketstuff except timeout: print 'caught a timeout'许多人认为import *有问题,并试图避免它。这是因为以这种方式导入的2个或更多模块中的公共变量名将相互碰撞。 例如,考虑以下三个python文件: # a.py def foo(): print "this is a's foo function" # b.py def foo(): print "this is b's foo function" # yourcode.py from a import * from b import * foo()如果你运行yourcode.py,你只会看到输出"this is b‘see function“。 出于这个原因,我建议导入模块并使用它,或者从模块导入特定的名称: 例如,使用显式导入时,您的代码如下所示: import socket from socket import AF_INET, SOCK_DGRAM def main(): client_socket = socket.socket(AF_INET, SOCK_DGRAM) client_socket.settimeout(1) server_host = 'localhost' server_port = 1234 while(True): client_socket.sendto('Message', (server_host, server_port)) try: reply, server_address_info = client_socket.recvfrom(1024) print reply except socket.timeout: #more code只是多了一点打字,但一切都很明确,对读者来说,一切都是从哪里来的。 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |