处理python套接字中的超时错误 您所在的位置:网站首页 err_connection_timed_out什么问题 处理python套接字中的超时错误

处理python套接字中的超时错误

2023-05-30 21:17| 来源: 网络整理| 查看: 265

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 实验室设备网 版权所有