使用 Python Socket 包搭建简易服务器

本是古典 何须时尚 2022-10-29 03:23 318阅读 0赞

本文记录使用Python Socket包搭建简易服务器的代码。

概述

平时访问网站底层大多是socket封装的http请求,都是基于tcp-ip协议进行通信的;角色分为服务器端和客户端。

代码

  1. import socket
  2. def main():
  3. # ipv4 # tcp-ip
  4. sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  5. sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  6. # 监听本机 8000 端口
  7. sock.bind(('localhost', 8000))
  8. # 最多同时5个链接
  9. sock.listen(5)
  10. print('start listening! ')
  11. while True:
  12. # 接受请求
  13. conn, addr = sock.accept()
  14. # 获取数据
  15. data = conn.recv(1024)
  16. print(data)
  17. # 返回网页显示内容
  18. conn.send(b"HTTP/1.1 200 OK\r\nContent-Type:text/html; charset=utf-8\r\n\r\n")
  19. conn.send("<h2>测试数据</h2>".encode('utf-8'))
  20. # 关闭链接
  21. conn.close()
  22. if __name__ == '__main__':
  23. main()

使用

  • 运行程序后,在浏览器访问 localhost:8000即可进入代码中的 while 循环内,收到返回并在浏览器显示

3fe4b1b7e7ce3e1abd1b215a4e15ee42.png

  • 同时终端收到信息打印出来:

    start listening!
    b’GET / HTTP/1.1\r\nHost: localhost:8000\r\nConnection: keep-alive\r\nCache-Control: max-age=0\r\nUpgrade-Insecure-Requests: 1\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.9\r\nSec-Fetch-Site: none\r\nSec-Fetch-Mode: navigate\r\nSec-Fetch-User: ?1\r\nSec-Fetch-Dest: document\r\nAccept-Encoding: gzip, deflate, br\r\nAccept-Language: zh,en-US;q=0.9,en;q=0.8,zh-TW;q=0.7,zh-CN;q=0.6\r\n\r\n’
    b’GET /favicon.ico HTTP/1.1\r\nHost: localhost:8000\r\nConnection: keep-alive\r\nPragma: no-cache\r\nCache-Control: no-cache\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36\r\nAccept: image/avif,image/webp,image/apng,image/,/*;q=0.8\r\nSec-Fetch-Site: same-origin\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Dest: image\r\nReferer: http://localhost:8000/\r\nAccept-Encoding: gzip, deflate, br\r\nAccept-Language: zh,en-US;q=0.9,en;q=0.8,zh-TW;q=0.7,zh-CN;q=0.6\r\n\r\n’
    b’’

发表评论

表情:
评论列表 (有 0 条评论,318人围观)

还没有评论,来说两句吧...

相关阅读