Python实现web静态服务器

 使用Python,做一个静态的http服务器,直接返回一个字符串。

1.创建进程

2.在子进程中处理请求

3.获得请求,构造相应报文,响应起始行,响应头,响应体,传给客户端。

 

import socket

from multiprocessing import Process

PORT = 10002


def handle_client(client_sock, client_addr):
    """
    子进程处理客户端
    :param client_sock:  socket类型对象  处理客户端通信用到的socket对象
    :param client_addr:  元祖 (ip, port)  客户端的地址信息
    :return: None
    """
    # 接收客户端发送过来的请求数据, 即http请求报文数据
    http_req_data = client_sock.recv(1024)
    print("客户端 %s 发送的HTTP请求报文:\n %s" % (client_addr, http_req_data.decode()))

    # 构造响应报文
    resp_start_line = "HTTP/1.0 200 OK\r\n"  # 响应起始行
    resp_headers = "Server: MyServer\r\n"  # 响应头
    resp_headers += "Content-Type: text\r\n"
    resp_body = "hello python"  # 响应体

    http_resp_data = resp_start_line + resp_headers + "\r\n" + resp_body
    print("传回给客户端的响应HTTP报文:\n %s" % http_resp_data)

    # 传回给客户端响应数据
    client_sock.send(http_resp_data.encode())

    # 关闭socket
    client_sock.close()


def main():
    listen_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    listen_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    address = ("", PORT)
    listen_sock.bind(address)
    listen_sock.listen(128)
    while True:
        client_sock, client_addr = listen_sock.accept()
        print("客户端%s已连接" % (client_addr,))
        p = Process(target=handle_client, args=(client_sock, client_addr))
        p.start()
        # 释放client_sock
        client_sock.close()


if __name__ == '__main__':
    main()

运行结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值