套接字编程是一种用于实现网络通信的编程技术,它允许不同计算机之间通过网络进行数据传输和通信。在Python中,可以使用`socket`模块来进行套接字编程。以下是一个简单的TCP服务器和客户端的实现示例:
服务器端代码
```python
import socket
创建TCP套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
绑定套接字到地址和端口
server_socket.bind(('localhost', 9999))
开始监听连接请求
server_socket.listen(5)
print("服务器启动,等待客户端连接...")
while True:
接受客户端连接
client_socket, addr = server_socket.accept()
print(f"客户端 {addr} 已连接")
接收数据
data = client_socket.recv(1024)
print(f"收到消息: {data.decode()}")
发送响应
client_socket.send("服务器已收到消息".encode())
关闭连接
client_socket.close()
```
客户端代码
```python
import socket
创建TCP套接字
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
连接服务器
client_socket.connect(('localhost', 9999))
发送数据
client_socket.send("你好,服务器!".encode())
接收响应
response = client_socket.recv(1024)
print(f"收到响应: {response.decode()}")
关闭连接
client_socket.close()
```
代码解释
创建套接字
使用`socket.socket(socket.AF_INET, socket.SOCK_STREAM)`创建一个TCP套接字。
绑定地址和端口
使用`server_socket.bind(('localhost', 9999))`将套接字绑定到本地地址`localhost`和端口`9999`。
开始监听
使用`server_socket.listen(5)`开始监听连接请求,参数`5`表示允许最多5个连接排队等待处理。
接受连接
使用`server_socket.accept()`接受客户端的连接请求,返回一个新的套接字对象和客户端地址。
接收和发送数据
使用`client_socket.recv(1024)`接收客户端发送的数据,使用`client_socket.send(data)`发送数据。
关闭连接
使用`client_socket.close()`关闭套接字,释放资源。
建议
错误处理:在实际应用中,应该添加适当的错误处理机制,例如处理网络中断、地址已被占用等情况。
多线程/多进程:对于高并发的场景,可以考虑使用多线程或多进程来处理多个客户端连接。
安全性:在处理网络通信时,应注意安全性问题,例如使用SSL/TLS加密通信内容。
通过以上步骤和示例代码,你可以实现基本的套接字编程,并在Python中进行网络通信。