【Network】关于TCP异步的浅薄看法

1. 什么是TCP异步

一般的socket的编程,是基于同步机制开发的服务器和客户端,线程会进入阻塞或者挂起状态,降低线程利用率,同时程序影响效率。因此,tcp程序引入异步回调:—在异步套接字完成网络操作后,线程没有被阻塞或者挂起,接着通过调用回调函数处理后续网络操作。而主线程继续执行,以实现并行执行的结果

2. 为什么要引入异步

看到过一个解释。当我们打开一个程序时,鼠标不停地转但是就是不见界面跳转,这是其他耗时操作阻碍了ui线程,造成ui线程不能响应用户操作。如果引用异步机制,ui线程在发起耗时操作之后马上回来响应用户操作,把能响应的都给用户,最后等耗时操作结束,通过回调来处理耗时操作的结果。这就是异步机制能快速响应用户界面,还有更高的伸缩性(线程池更加灵活分配利用数量有限的线程)

3. python 中实现异步TCP

gevent.server

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# 说明: 导入公共模块
import time
from gevent.server import StreamServer
# 说明: 导入其它模块
def tcp_handler(socket, address):
    timestamp = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
    print '%s client(%s) connectd to server.' % (timestamp, address)
    gevent.sleep(5)
    socket.close()
if __name__ == '__main__':
    host = ''
    port = 80
    server = StreamServer((host, port), tcp_handler)
    server.serve_forever()
posted @ 2022-03-17 15:07  恩赐解脱ゞ  阅读(189)  评论(0编辑  收藏  举报