Debian系统通常预装Python 3,可通过以下命令检查版本:
python3 --version
若未安装或需要升级,执行以下命令安装最新版本:
sudo apt update && sudo apt install python3 python3-pip
python3-pip
是Python包管理工具,用于后续安装第三方网络库(如requests
)。
网络编程的核心是客户端-服务器模型,通过**套接字(Socket)**实现通信。需掌握两个关键协议:
socket
是Python标准库中的底层网络模块,支持TCP/UDP编程。以下是TCP回声服务器(接收客户端消息并原样返回)和TCP客户端的完整示例:
import socket
def tcp_server():
# 1. 创建TCP套接字(AF_INET=IPv4,SOCK_STREAM=TCP)
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2. 绑定IP和端口(''表示本机所有IP,端口建议选1024-65535之间的未被占用端口)
server_socket.bind(('', 8888))
# 3. 开始监听(backlog=5表示最大等待连接数)
server_socket.listen(5)
print("服务器启动,等待客户端连接...")
while True:
# 4. 接受客户端连接(阻塞直到有客户端连接)
client_socket, client_addr = server_socket.accept()
print(f"接收到来自 {client_addr} 的连接")
try:
while True:
# 5. 接收数据(缓冲区大小1024字节)
data = client_socket.recv(1024)
if not data: # 客户端断开连接
break
print(f"收到客户端消息: {data.decode('utf-8')}")
# 6. 发送响应(将收到的数据原样返回)
client_socket.sendall(data)
finally:
# 7. 关闭客户端连接
client_socket.close()
if __name__ == "__main__":
tcp_server()
import socket
def tcp_client():
# 1. 创建TCP套接字
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2. 连接服务器(指定服务器IP和端口)
client_socket.connect(('127.0.0.1', 8888))
try:
# 3. 发送消息(需编码为bytes)
message = "你好,服务器!"
client_socket.sendall(message.encode('utf-8'))
# 4. 接收响应
response = client_socket.recv(1024)
print(f"服务器回复: {response.decode('utf-8')}")
finally:
# 5. 关闭连接
client_socket.close()
if __name__ == "__main__":
tcp_client()
运行步骤:
python3 server.py
;python3 client.py
;掌握TCP/UDP基础后,可根据需求学习以下内容:
asyncio
库实现高并发(如聊天室、实时推送),示例代码:import asyncio
async def handle_client(reader, writer):
data = await reader.read(100)
message = data.decode()
print(f"收到客户端消息: {message}")
writer.write(f"你好,客户端!".encode())
await writer.drain()
writer.close()
async def main():
server = await asyncio.start_server(handle_client, '127.0.0.1', 8888)
async with server:
await server.serve_forever()
asyncio.run(main())
requests
库发送HTTP请求(如爬取网页、调用API),安装命令:pip3 install requests
,示例代码:import requests
response = requests.get('https://api.github.com')
print(response.status_code) # 输出状态码(如200表示成功)
print(response.json()) # 输出JSON格式的响应内容
ssl
模块为TCP通信添加SSL/TLS加密(如HTTPS),防止数据泄露。telnet
或nc
(netcat)测试TCP服务器,例如:telnet 127.0.0.1 8888
或nc 127.0.0.1 8888
logging
模块记录程序运行状态(如连接信息、错误信息),便于排查问题;socket.error
等异常,避免程序因网络问题崩溃(如客户端强制断开连接)。通过以上步骤,你可快速入门Debian下的Python网络编程。根据实际需求,进一步学习高级主题(如WebSocket、gRPC),提升网络应用开发能力。