第十八节 单线程单线程非堵塞长链接
Posted kogmaw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十八节 单线程单线程非堵塞长链接相关的知识,希望对你有一定的参考价值。
import socket """ 短链接:传输三个数据,传一个进行一次三次握手四次挥手,再传输一个,再建立一个三次握手四次挥手...... 长链接:只建立一次链接,传三个数据 """ def tcp_serve(resp_socket): resp_body = ‘hahaha‘ resp_header = ‘HTTP/1.1 200 OK ‘ + ‘Content-Length:%d ‘ % len(resp_body) + " " + " " # ‘Content-Length,这个参数可以告诉浏览器此次传输的数据有多长,以便浏览器判断此次数据是否接受完成 resp_data = resp_header + resp_body resp_socket.send(resp_data.encode(‘utf-8‘)) def main(): web_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) web_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) web_socket.bind((‘192.168.0.106‘,8080)) web_socket.listen(128) web_socket.setblocking(False) client_socket_list = list() while True: try: resp_socket, resp_addr = web_socket.accept() except Exception as e: pass else: resp_socket.setblocking(False) client_socket_list.append(resp_socket) for client_socket in client_socket_list: try: recv_data = client_socket.recv(1024) except Exception as e: pass else: if recv_data: tcp_serve(client_socket) print(recv_data) else: client_socket.close() client_socket_list.remove(client_socket) web_socket.close() if __name__ == ‘__main__‘: main()
以上是关于第十八节 单线程单线程非堵塞长链接的主要内容,如果未能解决你的问题,请参考以下文章