1. 项目概述:用Socket实现计算机间的"电话通信"
在互联网时代,计算机之间的通信就像人与人之间的通话一样普遍。而Socket(套接字)就是实现这种通信的基础技术,它相当于计算机世界的"电话系统"。想象一下,当你想给朋友打电话时,需要知道对方的电话号码、拨号、等待接通,然后才能开始对话。Socket编程的原理与此高度相似——通过IP地址定位目标计算机,通过端口号找到具体应用,建立连接后即可传输数据。
Python作为一门简洁强大的编程语言,其内置的socket模块让我们能够轻松实现网络通信功能。无论是构建即时聊天工具、远程控制程序,还是开发分布式系统,Socket都是不可或缺的核心技术。本教程将从零开始,带你用99天中的第26天时间,掌握Python Socket编程的核心要点,实现计算机之间的基础通信。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心概念解析:Socket通信的基本原理
2.1 什么是Socket?
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它把复杂的TCP/IP协议隐藏在简单的接口后面。用生活中的例子来比喻:
- IP地址:相当于电话号码(如192.168.1.1)
- 端口号:相当于分机号(如80端口对应HTTP服务)
- Socket:相当于整个电话系统,包括听筒、话筒和拨号盘
Python中的socket模块提供了BSD Socket接口的访问方法,让我们可以用统一的方式在不同操作系统上实现网络通信。
2.2 Socket通信的基本流程
一个典型的Socket通信流程如下:
-
服务器端:
- 创建Socket → 相当于安装电话
- 绑定IP和端口 → 相当于申请电话号码
- 监听连接 → 相当于待机状态
- 接受连接 → 相当于接听来电
- 收发数据 → 相当于通话
- 关闭连接 → 相当于挂断电话
-
客户端:
- 创建Socket → 安装电话
- 连接服务器 → 拨号
- 收发数据 → 通话
- 关闭连接 → 挂断
2.3 Socket类型介绍
Python socket模块主要支持两种类型的Socket:
-
流式Socket(SOCK_STREAM):
- 面向连接的通信
- 使用TCP协议
- 保证数据顺序和可靠性
- 适合传输大量数据
-
数据报Socket(SOCK_DGRAM):
- 无连接的通信
- 使用UDP协议
- 不保证顺序和可靠性
- 适合实时性要求高的场景
3. 环境准备与基础实现
3.1 Python socket模块基础
Python内置的socket模块提供了所有必要的Socket编程接口。首先我们需要导入这个模块:
python复制import socket
创建Socket对象的基本语法:
python复制# 创建TCP Socket
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 创建UDP Socket
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
参数说明:
AF_INET:表示使用IPv4地址族SOCK_STREAM:流式Socket(TCP)SOCK_DGRAM:数据报Socket(UDP)
3.2 实现一个简单的TCP服务器
下面是一个最基本的TCP服务器实现:
python复制import socket
# 1. 创建TCP Socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2. 绑定IP和端口
server_address = ('localhost', 12345) # 使用本地回环地址和12345端口
server_socket.bind(server_address)
# 3. 开始监听,设置最大连接数为5
server_socket.listen(5)
print("服务器已启动,等待连接...")
# 4. 接受客户端连接
client_socket, client_address = server_socket.accept()
print(f"接收到来自 {client_address} 的连接")
# 5. 接收和发送数据
data = client_socket.recv(1024) # 接收最多1024字节数据
print(f"接
