Python 网络编程:如何用 Socket 实现网络通信? Socket 是一种用于网络通信的编程接口。使用 Socket,我们可以编写客户端和服务器端程序,实现网络通信。 在 Python 中,我们可以使用内置的 socket 模块来实现 Socket 编程。本文将介绍如何使用 Python socket 模块来实现网络通信。 1. 创建 Socket 首先,我们需要创建一个 Socket。使用 socket 模块中的 socket() 函数来创建一个 Socket。该函数的参数包括 Socket 类型以及 Socket 的传输协议。 ```python import socket # 创建一个 TCP Socket 对象 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) ``` 其中,AF_INET 表示 Socket 的地址类型为 IPv4,SOCK_STREAM 表示使用 TCP 协议传输数据。 2. 连接服务器 在客户端程序中,我们需要连接服务器端的 Socket。使用 Socket 对象的 connect() 方法来连接服务器。需要传入服务器的 IP 地址和端口号。 ```python import socket # 创建一个 TCP Socket 对象 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 连接服务器 s.connect(('127.0.0.1', 8888)) ``` 3. 发送和接收数据 连接成功后,我们需要向服务器发送数据,以及接收服务器返回的数据。使用 Socket 对象的 send() 方法发送数据,recv() 方法接收数据。 ```python import socket # 创建一个 TCP Socket 对象 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 连接服务器 s.connect(('127.0.0.1', 8888)) # 发送数据 s.send('Hello, server!'.encode()) # 接收数据 data = s.recv(1024).decode() print('Received from server:', data) # 关闭 Socket s.close() ``` 其中,s.send() 方法需要传入一个 bytes 类型的数据。在本例中,我们使用 encode() 方法将字符串转换为 bytes 类型。s.recv() 方法返回 bytes 类型的数据,需要使用 decode() 方法将其转换为字符串。 4. 监听和接收连接 在服务器端程序中,我们需要监听端口,等待客户端的连接。使用 Socket 对象的 bind() 方法绑定本地 IP 地址和端口号,listen() 方法开启监听。 ```python import socket # 创建一个 TCP Socket 对象 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定本地 IP 地址和端口号 s.bind(('127.0.0.1', 8888)) # 开启监听 s.listen(5) while True: # 等待客户端连接 client_socket, client_address = s.accept() print('Connected by', client_address) # 接收数据 data = client_socket.recv(1024).decode() print('Received from client:', data) # 发送数据 client_socket.send('Hello, client!'.encode()) # 关闭 Socket client_socket.close() ``` 其中,s.accept() 方法会阻塞程序,直到有客户端连接上来。该方法返回一个 Socket 对象和客户端的地址。 5. 总结 本文介绍了如何使用 Python socket 模块来实现网络通信。我们可以创建 Socket、连接服务器、发送和接收数据,以及监听和接收连接。Socket 编程是一个重要的网络编程知识点,需要认真学习和掌握。