Python Socket编程核心是服务端绑定监听接收、客户端连接收发;需处理端口复用、IP匹配、字节流边界及异常关闭。

Python 中的 Socket 编程是网络通信的底层基础,掌握它能帮你理解客户端与服务器如何建立连接、收发数据。核心就两点:服务端要 绑定地址 + 监听 + 接收连接 + 收发,客户端只需 连接 + 收发。流程清晰,但细节决定成败。
服务端必须先启动并监听
服务端程序需提前运行,调用 bind() 绑定本机 IP 和端口(如 ('127.0.0.1', 8080)),再通过 listen() 进入等待状态。此时它不主动发起通信,只响应客户端的连接请求。常见错误是端口被占用(报错 Address already in use),可加 socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 避免重启时的等待。
客户端连接前要确认服务端可达
客户端调用 connect() 时,会尝试三次握手。如果失败,通常是因为:服务端没运行、IP 或端口写错、防火墙拦截、或服务端 bind 的 IP 不匹配(例如 bind('0.0.0.0', port) 才能接受外网连接,而 bind('127.0.0.1', port) 只接受本地)。调试时可用 telnet 127.0.0.1 8080 快速验证端口是否通。
收发数据需处理字节流边界
Socket 传输的是原始字节流,没有天然的消息分隔。send() 和 recv() 不保证一次发完或一次收全。比如你 send(1024 字节),对方可能 recv() 两次才收完;也可能一次 recv() 拿到两条消息拼在一起。常用解决法:
《Android基础教程》内容完整丰富,具有较强的通用性,读者都能通过《Android基础教程》快速学习Android开发,提高相关技能。Android是谷歌公司开发的全新开源手机平台。《Android基础教程》是一部关于Android开发的基础教程,采用由浅入深、循序渐进的方式讨论Android。书中还结合数独游戏等实例更加形象生动地讲解了Android开发的基本流程,且每章最后都有一个“快速阅读指南”,更加方便了读者的阅读。android基础教程,美Ed_Bur
立即学习“Python免费学习笔记(深入)”;
- 固定长度头:先发 4 字节表示后续内容长度,再发实际数据
- 特殊分隔符:如每条消息结尾加
\n,接收方按行拆分(适合文本) - 使用更高层协议:如 HTTP、WebSocket,它们已封装好帧结构
别忘了关闭连接和异常处理
通信结束后,双方都应调用 close() 释放资源。更稳妥的做法是用 try/finally 或上下文管理器(with socket.socket(...) as s:)。网络操作极易出错——连接中断、对端崩溃、超时等,建议对 send()、recv()、connect() 加 try-except,捕获 ConnectionError、TimeoutError、OSError 等常见异常。
不复杂但容易忽略。把 bind-listen-accept 和 connect-send-recv 这两套动作理顺,再补上边界处理和异常兜底,一个可用的 Socket 通信就跑起来了。









