您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

from foo import *

将所有不带下划线的名称(或仅在modules__all__属性中定义的名称添加foo到当前模块中。

在上面的代码中,from socket import *您只是想抓住timeouttimeout进入当前名称间的时间。

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’s foo 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

只是增加了一点点输入,但所有内容都是明确的,并且对于所有来源的读者来说都是显而易见的。

python 2022/1/1 18:52:25 有313人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶