socket编程

💡 原文中文,约9300字,阅读约需22分钟。
📝

内容提要

本文介绍了socket编程的不同版本,逐步实现从处理单个请求到支持多线程处理多个请求的功能。每个版本增加了新特性,如信号处理、延时和多线程,最终实现了一个能够同时处理多个客户端请求的服务器。

🎯

关键要点

  • 版本1 只能处理一个请求。
  • 版本2 可以处理多个请求,但每次只能处理一个请求,无法用 ctrl+c 退出。
  • 版本3 可以使用多次,可以用 ctrl+c 退出,增加了信号处理功能。
  • 版本4 在版本3的基础上增加了sleep函数,用于观察连接处理问题。
  • 版本5 使用多线程实现,可以同时处理多个请求。
  • 版本5 基础上的 discard 协议实现。
  • 版本5 基础上的 time 协议实现。
  • 版本5 基础上的 daytime 协议实现。
  • 版本5 基础上的 chargen 协议实现。
  • 版本5 基础上的 echo 协议实现。
  • 版本6 静态http的实现。
  • 版本6 有配置的静态http实现。
  • 版本6 有配置的静态http+cgi实现。
  • 版本6 有配置的静态http+cgi+fastcgi实现。
  • 版本6 有配置的静态http+cgi+fastcgi+http代理实现。
  • 版本6 有配置的静态http+cgi+fastcgi+http代理+socks5代理实现。
  • Python的命令行参数和配置文件的使用。
  • Windows下需要特别处理信号,Linux可以直接用 ctrl+c 退出。
➡️

继续阅读