2019-07-05 单进程单线程多任务非阻塞、长短连接

单进程单线程多任务非阻塞

tcp_server_socket.setblocking(False)    设置套接字为非阻塞的方式

retv_data   对方发送过来数据

Type:套接字类型,可以是SOCK_STREAM(流式套接字,主要用于TCP协议)或者SOCK_DGRAM(数据报套接字,主要用于UDP协议)

tcp_server_socket.setsocket(socket.SOL_SOCKET,socket.SO_REQUEADDR,1) 这个语句可以让服务器的端口重复利用,避免出现服务器先发出关闭请求后 短时在连接服务器出现的端口被占用的错误服务器中一切的外链资源:CSS js 图片,视频等都会重新发起请求;最后1的作用是结束后立即释放端口。

长短连接

 HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包、不四次握手),等待在同域名下继续用这个通道传输数据;相反的就是短连接。

长连接并不是永久连接的。如果一段时间内(具体的时间长短,是可以在header当中进行设置的,也就是所谓的超时时间),这个连接没有HTTP请求发出的话,那么这个长连接就会被断掉。长连接的话,那么这么多次HTTP请求(这些请求包括请求网页内容,CSS文件,JS文件,图片等等),其实使用的都是一个TCP连接,很显然是可以节省很多消耗的。长连接情况下,多个HTTP请求可以复用同一个TCP连接,这就节省了很多TCP连接建立和断开的消耗。

短连接比如你请求一个网页,这个网页里肯定还包含了CSS、JS等等一系列资源,如果你是短连接(也就是每次都要重新建立TCP连接)的话,那你每打开一个网页,基本要建立几个甚至几十个TCP连接,这太浪费资源。

你可能感兴趣的:(2019-07-05 单进程单线程多任务非阻塞、长短连接)