手动实现一个简单的网站服务器

import socket

# 创建一个新的函数 发送数据
def service_client(new_socket):
    # 1. 当浏览器连接到网站服务器的时候 首先向服务器发送一些数据
    '''
    http 协议信息
        所有的网站全部都是基于http协议去搭建的
    :param new_socket:
    :return:
    '''
    request = new_socket.recv(1024)
    print(request)

    # 2. 向浏览器发送http数据
    response = 'HTTP/1.1 200 OK \r\n'
    response += '\r\n'
    # 写出你想要发送的数据
    response += 'hello world'

    # 将数据发送出去
    # 发送的数据一定要指定一个编码集
    new_socket.send(response.encode('utf-8'))

    # 当服务完成之后 需要释放系统资源
    new_socket.close()



# 声明一个tcp网络模型的函数
def main():
    # 1.创建一个tcp套接字 [套接字就是专门负责与浏览器链接的一种对象]
    '''
    在socket方法中 需要传入两个参数
        网络协议
            ipv4 ipv6

        网络模型的类型
            tcp
    :return:
    '''
    tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    # 2. 当网站服务终止时 需要释放电脑端口资源
    tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

    # 3. 绑定本机信息
    '''
    传入的值是一个元组
        因为不光光需要电脑的ip地址
        还需要网站运行的端口值
    '''
    tcp_server_socket.bind(('', 80))

    # 需要将网站设置成监听模式
    '''
    等待浏览器链接
        直到浏览器链接成功
        
        128最大连接数
    '''
    tcp_server_socket.listen(128)

    # 网站服务   显示你想要显示的内容
    while True:
        # 循环服务
        '''
        需要去声明一个新的套接字
            因为旧套接字被占用了
                当浏览器去链接网站服务的时候
                    已经在工作了
                    新的套接字负责发送/接收数据
        '''
        new_socket, client_addr = tcp_server_socket.accept()
        '''
        new_socket: 是新的套接字对象
        client_addr: 浏览器访问网站服务器时, 向网站服务器发送一组数据
            浏览器所在电脑的ip地址和端口
        '''
        # 使用新的套接字去发送数据 拆分成一个新的函数
        service_client(new_socket)

if __name__ == '__main__':
    main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值