Python面试题更新 2026-08-05

使用 Python 编写一个基础的 TCP 客户端与服务器程序,请给出具体实现。

编码实现技术原理Python

考察说明

考查候选人用 Python 实现 TCP 网络通信的基本能力,包括 socket 编程、连接建立与数据收发。

回答思路

  1. 【回答框架 1】服务器端使用 socket.socket(socket.AF_INET, socket.SOCK_STREAM) 创建 TCP socket,bind 到指定地址和端口,listen 设置监听队列,accept 接受客户端连接。
  2. 【回答框架 2】客户端同样创建 socket,connect 到服务器地址和端口,建立连接后通过 send 和 recv 进行数据收发,注意 recv 可能只收到部分数据,需循环接收直到完整。
  3. 【回答框架 3】服务器处理每个客户端连接时,可循环 recv 数据并 send 响应,处理完关闭连接;为支持多客户端,可使用多线程或 select 机制,但基础实现可单线程顺序处理。
  4. 【回答框架 4】注意设置 socket 超时或使用非阻塞模式避免阻塞,关闭连接时调用 close 释放资源,可使用 with 语句或 try-finally 确保关闭。
  5. 【回答框架 5】示例代码需包含服务器端和客户端两个脚本,服务器监听本地端口如 8888,客户端连接后发送消息并接收回显。
  6. 【关键点 1】TCP 是面向连接的流协议,recv 需循环处理粘包和半包。
  7. 【关键点 2】服务器 accept 返回新 socket 用于通信,监听 socket 继续接受新连接。
  8. 【关键点 3】使用 bind 绑定地址和端口,listen 设置最大等待连接数。
  9. 【关键点 4】客户端 connect 建立连接,send 和 recv 需处理返回值。
  10. 【关键点 5】关闭 socket 释放资源,避免资源泄漏。
  11. 【易错点 1】recv 可能一次收不全数据,需循环接收直到预期长度或连接关闭。
  12. 【易错点 2】多客户端场景下单线程顺序处理会阻塞,需使用多线程或异步。
  13. 【易错点 3】未设置超时可能导致程序永久阻塞。