码迷,mamicode.com
首页 > Web开发 > 详细

web服务器

时间:2019-08-25 15:41:29      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:nal   导致   nbsp   thread   with   web服务   close   线程   col   

单进程服务器

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服务器

标签:nal   导致   nbsp   thread   with   web服务   close   线程   col   

原文地址:https://www.cnblogs.com/ql0302/p/11408089.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!