阿杰 👍
你想学 Socket 网络编程,我帮你从 概念 → 基础 → 进阶 → 实战 系统整理一份学习路线,并附带 Python 示例。


🌐 Socket 网络编程学习路线

一、基础概念

  1. 什么是 Socket?
    • Socket = IP 地址 + 端口号
    • 是应用层与传输层(TCP/UDP)之间的桥梁
    • 通信过程:客户端 Socket <——TCP/UDP——> 服务端 Socket
  2. 常见协议
    • TCP(Transmission Control Protocol)
      • 面向连接(可靠)
      • 适合:文件传输、HTTP、聊天程序
    • UDP(User Datagram Protocol)
      • 无连接(不可靠但快)
      • 适合:视频流、实时游戏、语音通话

二、Python Socket 基础

Python 提供 socket 标准库,常用流程:

服务端(TCP)

import socket

# 1. 创建 socket 对象 (IPv4, TCP)
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 2. 绑定 IP 和端口
server.bind(('127.0.0.1', 8888))

# 3. 开始监听
server.listen(5)
print("服务端启动,等待客户端连接...")

while True:
    conn, addr = server.accept()  # 等待连接
    print("连接来自:", addr)
    data = conn.recv(1024).decode('utf-8')  # 接收数据
    print("收到:", data)
    conn.send("Hello Client!".encode('utf-8'))  # 回复
    conn.close()

客户端(TCP)

import socket

# 1. 创建 socket
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 2. 连接服务端
client.connect(('127.0.0.1', 8888))

# 3. 发送数据
client.send("Hello Server!".encode('utf-8'))

# 4. 接收回复
data = client.recv(1024).decode('utf-8')
print("收到回复:", data)

client.close()


三、UDP 示例

服务端(UDP)

import socket

server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server.bind(('127.0.0.1', 9999))

print("UDP 服务端启动...")

while True:
    data, addr = server.recvfrom(1024)
    print("收到:", data.decode(), "来自:", addr)
    server.sendto("ACK".encode(), addr)

客户端(UDP)

import socket

client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

client.sendto("你好 UDP!".encode(), ('127.0.0.1', 9999))
data, _ = client.recvfrom(1024)
print("服务端回复:", data.decode())

client.close()


四、进阶内容

  1. 多线程 / 多进程 / 异步
    • threading:多客户端连接
    • asyncio + asyncio.start_server():高并发
    • selectors:IO 多路复用
  2. 协议应用
    • HTTP 协议解析
    • WebSocket(实时通信)
  3. 安全性
    • SSL/TLS 加密(ssl 模块)
    • 防止粘包/半包问题(分隔符、固定长度、报文头)

五、实战项目建议

  1. 局域网聊天室(TCP + 多线程)
  2. 文件传输工具(断点续传)
  3. 简易 HTTP 服务器(Socket + HTTP 协议解析)
  4. 实时游戏服务器(UDP + 状态同步)

好嘞阿杰!我已经给你准备好一套可直接运行的 多人聊天室(Socket + 多线程)

  • 服务器:server.py
  • 客户端:client.py

下载:
server.py
client.py


怎么跑

  1. 启动服务器(本机或云主机)
python server.py --host 0.0.0.0 --port 5000

  1. 启动客户端(同机或远程机器均可)
python client.py --host 服务器IP --port 5000 --nick Alice

再开一个终端,换个昵称再连一次,就能多人聊天了。


支持的命令

  • /nick 新昵称 修改昵称
  • /list 查看在线用户
  • /quit 退出
  • /help 帮助

功能说明

  • UTF-8 文本、换行分包(避免粘包困扰常见场景)
  • 多线程读写,支持多客户端并发
  • 断线清理与广播通知(加入/退出都会提示)
  • SO_REUSEADDR、空闲超时、异常防护

如果你想要 文件传输聊天记录持久化TLS 加密 或 WebSocket 版本(浏览器可用),告诉我,我直接在这套代码上给你升级。