阻塞模式
阻塞就是如果请求没有响应,就一直等待,直到请求完成。
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()