阻塞模式

阻塞就是如果请求没有响应,就一直等待,直到请求完成。

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()

  

posted @ 2018-07-10 21:21  jabbok  阅读(327)  评论(0编辑  收藏  举报