Python多线程TCP服务端实现详解

温以宁
温以宁
发布时间:2026-10-13| 6人浏览过
原创

本文介绍如何使用Python的socket和threading模块构建一个支持多线程的TCP服务器。通过绑定端口、监听连接并为主线程分配子线程处理每个客户端的消息收发,实现高效并发通信。代码包含端口复用、消息解码及断线检测逻辑,适合学习Python网络编程基础。

Python多线程TCP服务端实现详解

本文分享了一个使用Python实现多线程TCP服务端的具体代码示例,供读者参考学习。

需求

需求

1. 创建一个TCP服务器,用于接收客户端发送的信息并给予回复。 2. 采用多线程方式实现客户端信息的接收处理。 3. 对接收到的客户端信息进行解码并输出显示。

思路分析

思路分析

1. 创建一个TCP客户端套接字(注:此处原文意指服务器端套接字,用于接收连接)。 2. 编写一个接收消息的方法,该方法负责接收客户端发送的消息,进行解码处理后输出。 3. 服务器端处于被动监听状态,每当有一个客户端连接请求到达,就创建一个子线程来执行上述接收消息的方法。

代码实现

代码实现

完整服务端代码


# 导入模块
import socket
import threading


# 接收消息
def recv(client_socket, ip_port):
  while True:
    client_text = client_socket.recv(1024)
    # 如果接收的消息长度不为0,则将其解码输出
    if client_text:
      print("[客户端消息]", ip_port, ":", client_text.decode("gbk"))
      # 给客户端响应
      client_socket.send("收到\n".encode())
    # 当客户端断开连接时,会一直发送''空字符串,所以长度为0已下线
    else:
      print("客户端", ip_port, "已下线")
      client_socket.close()
      break


# 程序主入口
def main():
  # 创建TCP套接字
  tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  # 设置端口复用
  tcp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
  # 绑定端口
  tcp_socket.bind(("", 8080))
  # 设置为被动监听状态,128表示最大连接数
  tcp_socket.listen(128)
  while True:
    # 等待客户端连接
    client_socket, ip_port = tcp_socket.accept()
    print("[新客户端]:", ip_port, "已连接")
    # 有客户端连接后,创建一个线程将客户端套接字,IP端口传入recv函数,
    t1 = threading.Thread(target=recv, args=(client_socket, ip_port))
    # 设置线程守护
    t1.setDaemon(True)
    # 启动线程
    t1.start()


if __name__ == '__main__':
  main()

执行结果

执行结果

接收客户端消息

 

响应客户端消息

 

客户端下线后识别

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。