web服务器

Posted ql0302

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了web服务器相关的知识,希望对你有一定的参考价值。

单进程服务器

from socket import *
serSocket = socket(AF_INET,SOCK_STREAM)
#重复使用绑定的信息
serSocket.setsockopt(sol_socket,so_reuseaddr,1)    #四次挥手,服务器先结束,而且想立即运行服务器,还能绑定
localAddr = ("",7788)
serSocket.bind(localAddr)
serSocket.listen(5)
while True:
    print("-----主进程,等待新客户端的到来-----")
    newSocket,destAddr = serSocket.accept()
    print("-----主进程,接下来负责数据处理")
    try:
        while True:
            recvData = newSocket.recv(1024)
            if len(recvData)>0:
                print(recv[%s]:%s%(str(destAddr),recvData))
            else:
                print([%s]客户端已经关闭%str(destAddr))
                break
    finally:
        newSocket.close()
serSocket.close()

 

多进程服务器:

from socket import *
from multiprocessing import *
from time import sleep
def dealWithClient(newSocket,destAddr):

    while True:
        recvData = newSocket.recv(1024)
        if len(recvData)>0:
            print(recv[%s]:%s%(str(destAddr),recvData))
        else:
            print([%s]客户端已经关闭%str(destAddr))
            break
    newSocket.close()

def main():
    serSocket = socket(AF_INET,SOCK_STREAM)
    #重复使用绑定的信息
    serSocket.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)    #四次挥手,服务器先结束,而且想立即运行服务器,还能绑定
    localAddr = ("",7788)
    serSocket.bind(localAddr)
    serSocket.listen(5)
    try:
        while True:
            print("-----主进程,等待新客户端的到来-----")
            newSocket,destAddr = serSocket.accept()
            print("-----主进程,接下来负责数据处理[%s]-----"%str(destAddr))
            client = Process(target = dealWithClient,args=(newSocket,destAddr))
            client.start()
#因为已经向子进程中copy了一份(引用),并且父进程中这个套接字也没有用处了,所以关闭 newSocket.close()
finally: serSocket.close() if __name__ == "__main__": main()

 

多线程服务器:

from socket import *
from multiprocessing import *
from time import sleep
def dealWithClient(newSocket,destAddr):

    while True:
        recvData = newSocket.recv(1024)
        if len(recvData)>0:
            print(recv[%s]:%s%(str(destAddr),recvData))
        else:
            print([%s]客户端已经关闭%str(destAddr))
            break
    newSocket.close()

def main():
    serSocket = socket(AF_INET,SOCK_STREAM)
    #重复使用绑定的信息
    serSocket.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)    #四次挥手,服务器先结束,而且想立即运行服务器,还能绑定
    localAddr = ("",7788)
    serSocket.bind(localAddr)
    serSocket.listen(5)
    try:
        while True:
            print("-----主进程,等待新客户端的到来-----")
            newSocket,destAddr = serSocket.accept()
            print("-----主进程,接下来负责数据处理[%s]-----"%str(destAddr))
            client = Thread(target = dealWithClient,args=(newSocket,destAddr))
            client.start()
            #因为线程中共享这个套接字,如果关闭了会导致这个套接字不可用,
            #但是此时在线程中这个套接字可能还在接收数据,因此不能关闭
            #newSocket.close()
    finally:
        serSocket.close()
if __name__ == "__main__":
    main()

 

以上是关于web服务器的主要内容,如果未能解决你的问题,请参考以下文章

web服务器都有哪些 常用的web服务器都有哪些

如何搭建web服务器??

如何用Java实现Web服务器

一文搞清Web服务器应用服务器Web容器和反向代理

web服务器

web服务器应用服务器web容器反向代理服务器区别与联系