共计 1598 个字符,预计需要花费 4 分钟才能阅读完成。
在今天的 Day45 中,我们将开始学习 Python 的网络编程,掌握使用 Socket 模块进行 TCP 和 UDP 通信的基础。网络编程是构建客户端和服务器通信程序的核心,Socket 是操作系统提供的基础通信机制。
一、什么是 Socket
Socket 是“套接字”的意思,是应用程序与网络之间的中间软件抽象层。我们可以使用它创建客户端或服务器,实现数据通信。
Socket 支持的两种通信方式:
- TCP:面向连接、可靠传输的协议,适用于文件传输、网页浏览等场景。
- UDP:无连接、速度快但不可靠,适用于视频直播、语音通信等场景。
二、TCP 通信示例
- TCP 服务器(server)代码示例:
import socket
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('127.0.0.1', 8000))
server.listen(1)
print(" 服务器已启动,等待连接...")
conn, addr = server.accept()
print(" 连接来自:", addr)
data = conn.recv(1024)
print(" 收到客户端消息:", data.decode())
conn.send(" 你好,客户端!".encode())
conn.close()
server.close()
- TCP 客户端(client)代码示例:
import socket
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('127.0.0.1', 8000))
client.send(" 你好,服务器!".encode())
data = client.recv(1024)
print(" 收到服务器消息:", data.decode())
client.close()
三、UDP 通信示例
- UDP 服务器代码:
import socket
udp_server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_server.bind(('127.0.0.1', 8888))
print("UDP 服务器等待消息...")
while True:
data, addr = udp_server.recvfrom(1024)
print(" 接收来自 {} 的消息:{}".format(addr, data.decode()))
udp_server.sendto(" 收到你的消息 ".encode(), addr)
- UDP 客户端代码:
import socket
udp_client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_client.sendto(" 你好,UDP 服务器 ".encode(), ('127.0.0.1', 8888))
data, addr = udp_client.recvfrom(1024)
print(" 接收服务器回应:", data.decode())
udp_client.close()
四、关键参数说明
AF_INET:表示使用 IPv4 协议。SOCK_STREAM:表示使用 TCP 协议。SOCK_DGRAM:表示使用 UDP 协议。recv():接收 TCP 消息。recvfrom():接收 UDP 消息,包含来源地址。
五、小结与练习
今天我们了解了 Python 网络编程的核心 Socket,掌握了 TCP 和 UDP 两种通信方式的基础使用方法。网络编程是构建分布式系统、聊天室、远程控制工具等的基础能力。
练习建议:
- 实现一个 TCP 聊天程序,支持双向通信。
- 用 UDP 构建一个简单的“客户端广播”程序。
- 修改 TCP 服务器,实现持续监听并响应多个客户端。
明天我们将继续探索更高级的网络编程主题,如 select 多路复用、简单的 Web 服务框架等内容。
正文完