Python构造HTTP协议的Web客户端及服务端

前言

这几年一直在it行业里摸爬滚打,一路走来,不少总结了一些python行业里的高频面试,看到大部分初入行的新鲜血液,还在为各样的面试题答案或收录有各种困难问题

于是乎,我自己开发了一款面试宝典,希望能帮到大家,也希望有更多的Python新人真正加入从事到这个行业里,让python火不只是停留在广告上。

微信小程序搜索:Python面试宝典

或可关注原创个人博客:https://lienze.tech

也可关注微信公众号,不定时发送各类有趣猎奇的技术文章:Python编程学习

构造Web客户端及服务端

  • 一个待返回的HTML页面
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>This is a Test</title>
</head>
<body>
    <div>你好,旅行者。</div>
</body>
</html>
  • 编写服务端代码返回该网页
import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 8001))
with open('1.html', encoding='utf-8') as fp:
    data = fp.read()

response = "HTTP/1.1 200 OK \r\n" + \
    "Server: abc \r\n" + \
    "Content-Type: text/html;charset=utf-8\r\n" + \
    "\r\n" + \
    data
s.listen(5)
while 1:
    try:
        c, c_addr = s.accept()
        print(c.recv(1024).decode())
        c.send(response.encode())
        c.close()
    except KeyboardInterrupt:
        break
s.close()
  • 请求客户端代码
import socket

c = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
msg = "GET / HTTP/1.1\r\n" + \
      "Host: 127.0.0.1\r\n"+ \
      "Accept: text/html\r\n" + \
      "\r\n"

c.connect(('127.0.0.1',80))
c.send(msg.encode())
data = c.recv(1024).decode()
print('[+] msg from Server:\n%s' % data)

Guess you like

Origin blog.csdn.net/HeroicLee/article/details/120892011