自定义基于时间循环的异步非阻塞模块

import socket

client = socket.socket()
client.setblocking(False)
client.connect(('www.baidu.com', 80))   #阻塞  三次握手

# 想办法获取socket的状态,连接成功之后才往下走
client.send(b'GET / http1\r\nhost:www.baidu.com\r\n\r\n')

# 想办法获取socket状态,是否数据返回了
response = client.recv(8096)   #阻塞

print(response)

client.close()    
import socket

client = socket.socket()
client.setblocking(False)
try:
    client.connect(('www.baidu.com', 80))   #阻塞  三次握手
except BlockingIOError as e
    pass
# 想办法获取socket的状态,连接成功之后才往下走
client.send(b'GET / http1\r\nhost:www.baidu.com\r\n\r\n')

# 想办法获取socket状态,是否数据返回了
response = client.recv(8096)   #阻塞

print(response)

client.close()    
import socket

client1 = socket.socket()
client1.setblocking(False)
try:
    client1.connect(('www.baidu.com', 80))   #阻塞  三次握手
except BlockingIOError as e
    pass

client2 = socket.socket()
client2.setblocking(False)
try:
    client2.connect(('www.bing.com', 80))   #阻塞  三次握手
except BlockingIOError as e
    pass

client3 = socket.socket()
client3.setblocking(False)
try:
    client3.connect(('www.cnblogs.com', 80))   #阻塞  三次握手
except BlockingIOError as e
    pass

# 检测以上三个socket是否连接成功,谁成功就给谁发信息

client1.send('GET / http1.1\r\nhost:www.baidu.com\r\n\r\n'

 非阻塞的好处?减少等待时间

猜你喜欢

转载自www.cnblogs.com/lh0803/p/12506011.html