阻塞就是如果请求没有响应,就一直等待,直到请求完成。
block_server.py
服务端在一段时间内,将一首诗歌的文本发送给client。
如果客户端连续请求三个服务端的数据,第一个请求还没结束之前,第二个并不会开始,而是会等到第一个结束再开始,这就是阻塞的意思。
# this is a socket test
import socket,time
def main():
poetry_file = 'science'
# set the socket server listening
server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
server.bind(('localhost',3397))
server.listen(5)
print('Serve %s on port 3397'%(poetry_file))
while True:
conn,addr = server.accept()
with open(poetry_file) as f:
while True:
bytes = f.read(15)
if len(bytes) == 0:
server.close()
return
print('sending %d bytes' % (len(bytes)))
try:
conn.send(bytes.encode())
except socket.error:
server.close()
return
time.sleep(0.2)
if __name__ == '__main__':
main()