跳到主要内容

🧠 Python 标准库 - socket 模块详解(底层网络通信)

socket 是 Python 内置的底层网络通信模块,支持 TCP 和 UDP 协议,适用于构建基础网络客户端与服务器程序。


🔌 一、TCP 服务端示例

import socket

服务 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
服务.bind(("localhost", 12345))
服务.listen(1)
print("等待客户端连接...")

连接, 地址 = 服务.accept()
print("已连接:", 地址)

数据 = 连接.recv(1024).decode()
print("收到:", 数据)

连接.send("你好,客户端!".encode())
连接.close()

🧑‍💻 二、TCP 客户端示例

import socket

客户端 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
客户端.connect(("localhost", 12345))

客户端.send("你好,服务端!".encode())
数据 = 客户端.recv(1024).decode()
print("收到服务端回复:", 数据)

客户端.close()

📡 三、UDP 服务端示例

import socket

服务 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
服务.bind(("localhost", 23456))
print("UDP 服务运行中...")

数据, 客户地址 = 服务.recvfrom(1024)
print("收到:", 数据.decode())

服务.sendto("你好,UDP 客户端".encode(), 客户地址)

🛰️ 四、UDP 客户端示例

import socket

客户端 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
客户端.sendto("你好,UDP 服务器".encode(), ("localhost", 23456))

数据, _ = 客户端.recvfrom(1024)
print("收到回复:", 数据.decode())

客户端.close()

📘 常用方法概览

方法说明
socket()创建新 socket
bind()绑定地址与端口(服务端)
listen()开始监听(TCP)
accept()接收连接(TCP)
connect()发起连接(客户端)
send() / recv()TCP 发送 / 接收数据
sendto() / recvfrom()UDP 发送 / 接收数据
close()关闭连接

✅ 总结

  • socket.AF_INET: IPv4
  • socket.SOCK_STREAM: TCP
  • socket.SOCK_DGRAM: UDP

socket 适合底层定制通信或教学演示,如需简洁访问 Web 推荐使用 requests