引言
在当今高度互联的世界中,不同设备间的数据交换变得日益频繁。无论是简单的客户端-服务器架构,还是复杂的分布式系统,都需要一种可靠的方式来实现节点间的通信。Python内置的socket
模块正是为此而生,它提供了底层的网络访问接口,允许我们直接控制数据包的发送与接收过程,从而实现自定义的网络协议设计。这使得socket
成为开发各类网络应用时不可或缺的一部分。
基础语法介绍
在深入了解socket
模块之前,首先我们需要明确几个核心概念:
- 套接字(Socket):用于描述IP地址和端口的组合,它是网络通信的基本单位。
- 创建套接字:使用
socket.socket()
函数创建一个新的套接字对象。 - 绑定地址:通过调用
bind()
方法将套接字与特定的本地地址(即IP地址和端口号)关联起来。 - 监听连接:服务器端需要调用
listen()
方法进入监听状态,等待客户端发起连接请求。 - 接受连接:当有新的连接请求到达时,服务器可以通过
accept()
方法接受这个连接,并返回一个新套接字用于后续通信。 - 发送/接收数据:使用
send()
和recv()
方法进行数据的发送与接收操作。
基础实例
让我们从一个简单的例子开始——编写一个最基本的TCP服务器和客户端程序。我们的目标是让服务器能够接收来自任何客户端的消息,并将其原封不动地回传给对方。
服务器端代码示例
import socket
# 创建TCP套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定到指定地址和端口
server_socket.bind(('localhost', 9999))
# 开始监听,最大排队数量为5
server_socket.listen(5)
print('Server listening on port 9999...')
while True:
# 接受客户端连接
client_socket, addr = server_socket.accept()
print(f'Got connection from {
addr}')
# 接收数据
data = client_socket