socket应用场景

模拟urllib实现网页内容的获取

实现http客户端的程序, 获取百度页面http://www.baidu.com:80

import socket
# 实例化socket对象; 默认参数指定为IPv4协议, 和TCP传输协议;
client = socket.socket()
# 连接服务器端
client.connect(('www.baidu.com', 80))
# 给百度服务器发送请求通过GET方法请求主页内容的请求, http协议的版本为1.1;
client.send(b'GET / HTTP/1.1\r\nHost:www.baidu.com\r\nConnection:close\r\n\r\n')
# 接收服务端返回的页面内容;
recvData = client.recv(1024*100)
# 解码为能够识别的字符串;
print(recvData.decode('utf-8'))
# 关闭客户端连接;
client.close()

在这里插入图片描述

实现简易的Web服务器端
import socket
import threading


def handler(clientObj):
    # 5. 接收客户端发送的请求
    recvData = clientObj.recv(1024)
    with open('hello.html', 'rb') as f:
        sendData = f.read()

    # 告诉浏览器http版本
    clientObj.send(b'HTTP/1.1 200 ok\r\n\r\n')
    clientObj.send(sendData)


def webServer():
    # 1. 创建socket对象
    server = socket.socket()
    # 2. 绑定端口和ip
    server.bind(('0.0.0.0', 8080))
    # 3. 监听是否有客户端连接
    server.listen(5)
    print("http服务正在启动8080........")


    while True:
        # 4. 接收客户端的连接
        clientObj, address = server.accept()
        t = threading.Thread(target=handler, args=(clientObj, ))
        t.start()

    server.close()
if __name__ == '__main__':
    webServer()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值