python——服务器

2018-05-25  本文已影响63人  Jalynn葸

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协议

上一篇下一篇

猜你喜欢

热点阅读