zoukankan      html  css  js  c++  java
  • 如何让socket编程非阻塞?

    import socket
    # 创建socket
    client = socket.socket()
    # 将原来阻塞的位置变成非阻塞(报错)
    client.setblocking(False)
    
    # 百度创建连接: 阻塞
    try:
        # 执行了但报错了
        client.connect(('www.baidu.com',80))
    except BlockingIOError as e:
        pass
    
    # 检测到已经连接成功
    
    # 问百度我要什么?
    client.sendall(b'GET /s?wd=alex HTTP/1.0
    host:www.baidu.com
    
    ')
    
    # 我等着接收百度给我的回复
    chunk_list = []
    while True:
        # 将原来阻塞的位置变成非阻塞(报错)
        chunk = client.recv(8096) 
        if not chunk:
            break
        chunk_list.append(chunk)
    
    body = b''.join(chunk_list)
    print(body.decode('utf-8'))
    
  • 相关阅读:
    bzoj2959
    学习笔记::lct
    bzoj3203
    bzoj1319
    bzoj3625
    bzoj3992
    bzoj1565
    bzoj3513
    平常练习动归(1.胖男孩)———最长公共子序列
    2016 noip 复赛 day2
  • 原文地址:https://www.cnblogs.com/apollo1616/p/10351506.html
Copyright © 2011-2022 走看看