基于Python+socket编程实现的简单的WebServer

基于Python+socket编程实现的简单的WebServer

通过解析客户端向服务端发送的请求数据: receiveMsg=self.__connection.recv(self.__bufferSize)。
来向客户端返回相应的请求数据


文件布局
  • pymsgi
    • static(存放照片等文件)
    • templates(存放html文件,下列为包含文件)
      • error.html
      • index.html
      • main.html
    • application.py
    • request.py
    • response.py
    • runserver.py

以下为代码实现

#application.py代码实现
from socket import *
import threading
from response import HttpResponse
from request import HttpRequest
#WSGI服务器
class WSGIServer():

    def __init__(self,host='localhost',port=9090,connectSize=100):
        '''

        :param port: 服务器的端口号
        :param connectSize:默认的并发数量
        '''
        self.__host=host
        self.__port=port
        self.__connectSize=connectSize
        pass

    def startServer(self):
        '''
        服务器启动主程序
        :return:
        '''
        server=None
        try:
            server=socket(AF_INET,SOCK_STREAM)
            server.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
            server.bind((self.__host,self.__port))
            server.listen(self.__connectSize)
            while True:
                print("++++++++++++服务器启动成功:http://"+self.__host+":"+str(self.__port))
                clientConn,clientAddr=server.accept()
                #定义独立的线程,处理每一个用户请求
                wt=WorkThread(clientConn,clientAddr)
                wt.start()
                pass
        except socket.gaierror as g:
            print(g)
            pass
        finally:
            pass
        pass

    pass


class WorkThread(threading.Thread):
    def __init__(self,connection,addr,bufferSize=8096):
        threading.Thread.__init__(self)
        self.__connection=connection
        self.__addr=addr
        self.__bufferSize=bufferSize
    def run(self):
        #while True:    #保持长连接
        receiveMsg=self.__connection.recv(self.__bufferSize)
        receiveMsg=receiveMsg.decode('utf-8')
        print(receiveMsg)
        request=HttpRequest(
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
服务器套接字(server socket)是在网络通信中用于接受客户端连接的一种套接字。它通常在服务器端创建,并监听指定的网络端口,等待客户端的连接请求。一旦有客户端发起连接请求,服务器套接字会接受该连接,并创建一个新的套接字与客户端进行通信。 服务器套接字使用一种称为传输控制协议(TCP)的网络协议来实现可靠的双向通信。它可以通过以下步骤来使用: 1. 创建服务器套接字:在服务器端使用编程语言(如Python)创建一个套接字对象,并绑定到特定的IP地址和端口上。 2. 监听连接请求:通过调用套接字对象的监听方法,开始监听指定端口上的连接请求。此时,服务器套接字进入监听状态,等待客户端的连接。 3. 接受连接请求:当有客户端发起连接请求时,服务器套接字会接受该请求,并创建一个新的套接字与客户端建立连接。服务器套接字可以继续监听其他连接请求。 4. 与客户端通信:一旦与客户端建立了连接,服务器可以使用该套接字进行双向通信。服务器可以接收来自客户端的数据,并发送响应数据给客户端。 5. 关闭连接:当通信完成后,服务器可以关闭与客户端的连接。这将释放资源,并允许服务器套接字继续接受新的连接请求。 通过使用服务器套接字,我们可以实现基于网络的应用程序,例如Web服务器、聊天应用程序等,以提供服务并处理客户端请求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值