Socket编程是Python实现网络通信的核心技术,允许开发者创建客户端-服务器架构、数据传输等应用。以下是关键知识点与实践示例:
一、基础概念
Socket(套接字)是网络通信的端点,通过IP地址和端口号标识。Python的socket
模块提供了底层网络通信接口,支持TCP/UDP协议。
- TCP:面向连接的可靠传输协议(如
socket.SOCK_STREAM
) - UDP:无连接的快速传输协议(如
socket.SOCK_DGRAM
) - 常见操作:
bind()
绑定端口、listen()
监听连接、accept()
接收请求、send()
发送数据
二、服务器端示例
import socket
# 创建TCP socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定地址和端口
server_socket.bind(('0.0.0.0', 8080))
# 监听连接
server_socket.listen(1)
print("Server is running on port 8080...")
# 接受客户端连接
conn, addr = server_socket.accept()
print(f"Connected by {addr}")
# 接收数据
data = conn.recv(1024)
print(f"Received: {data.decode()}")
# 发送响应
conn.send("Hello from server!".encode())
conn.close()
三、客户端示例
import socket
# 创建TCP socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器
client_socket.connect(('localhost', 8080))
# 发送数据
client_socket.send("Hello from client!".encode())
# 接收响应
response = client_socket.recv(1024)
print(f"Response: {response.decode()}")
client_socket.close()
四、高级功能
- 多线程处理:通过
threading
模块实现并发连接 - 异步IO:使用
asyncio
库提升性能 - SSL加密:通过
ssl
模块实现安全通信 - UDP广播:
socket.SO_BROADCAST
选项支持局域网广播
五、注意事项
- 端口冲突:确保使用的端口未被占用
- 权限问题:绑定1024以下端口需管理员权限
- 数据格式:需手动处理编码解码(如UTF-8)
- 资源释放:务必关闭socket连接