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()
network_socket

三、客户端示例

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选项支持局域网广播
python_code

五、注意事项

  • 端口冲突:确保使用的端口未被占用
  • 权限问题:绑定1024以下端口需管理员权限
  • 数据格式:需手动处理编码解码(如UTF-8)
  • 资源释放:务必关闭socket连接

六、扩展阅读

server_client