美文网首页
python——服务器

python——服务器

作者: Jalynn葸 | 来源:发表于2018-05-25 09:58 被阅读63次

    web服务器使用多进程、多线程的原因
    如果没有多进程和多线程,那么任务是单任务的,即在,为一个顾客服务的时候,不能同时为其他顾客服务

    单线程非阻塞
    from socket import * 
    serSocket = socket(AF_INET,SOCK_STREAM)
    localAddr = ('',7788)
    serSocket.bind(localAddr)
    
    serSocket.listen(100)
    serSocket.setblocking(False)#让这个socket成为非堵塞
    clientList = []
    while True:
        try:
            newSocket,clientAddr = serSocket.accept()
        except Exception, e:
            pass
        else:
            print("一个新的客户端到来:"%str(clientAddr))
            newSocket.setblocking(False)
            clientList.append((newSocket,clientAddr))
        
    for clientSocket,clientAddr in clientList:
        try:
            recvData = clientSocket.recv(1024)
        except Exception, e:
            pass
        else:
            clientSocket.close()
            print("clientAddr:%s recvData:%s"%(clientAddr,recvData))
            print("%s 已经下线"%str(clientAddr))
    
    select服务器

    最多1024个套接字

    poll版服务器

    解决了套接字有上限的问题,轮询检测

    epoll版服务器

    没有套接字有上限的问题,事件通知机制

    协程

    又叫微线程
    计算密集型——>需要占用大量的cpu资源——>用多进程
    IO密集型——>需要网络功能,大量的事件都在等待数据的到来——>多线程
    协程效率要高于进程和线程

    应用层 解决要传递什么数据
    传输层 解决如何传输数据udp tcp可以理解为快递公司
    网络层 IP可以理解为地理位置坐标
    链路层 具体的传输工具

    image.png

    ftp:传输文件
    ssh安全协议
    smtp协议
    Pop3协议

    相关文章

      网友评论

          本文标题:python——服务器

          本文链接:https://www.haomeiwen.com/subject/yocsjftx.html