python socket编程需严格按序完成五步:创建套接字、绑定地址端口(服务端)、建立连接(客户端connect/服务端listen+accept)、收发字节数据(注意编码与粘包)、正确关闭连接。

Python Socket编程的核心是模拟网络通信的底层过程,它严格遵循TCP/IP或UDP协议的交互逻辑。要实现稳定通信,必须按顺序完成几个关键步骤,缺一不可。
创建套接字(socket)
这是所有Socket操作的起点,需指定地址族和传输协议:
- AF_INET 表示IPv4地址族;AF_INET6 对应IPv6
- SOCK_STREAM 用于TCP(面向连接、可靠);SOCK_DGRAM 用于UDP(无连接、轻量)
- 例如:s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
绑定地址与端口(bind)
仅服务端需要调用,将套接字关联到本机特定IP和端口:
- IP可填'0.0.0.0'(监听所有网卡)或'127.0.0.1'(仅本地)
- 端口号建议选1024以上(避免权限问题),如(‘localhost’, 8080)
- 若端口被占用,会抛出OSError: [Errno 98] Address already in use
建立连接(connect / listen + accept)
客户端和服务端路径不同,但目标一致:形成可通信的数据通道:
易优cms快递货运物流类网站源码是基于易优cms开发,非常适合物流类企业通过网络拓展业务、程序内核为Thinkphp5.0开发,后台简洁,为企业网站而生。 这是一套安装就能建站的程序,不定期更新程序BUG,更新网站功能。我们提供的不仅是模板这么简单,我们还提供程序相关咨询、协助安装等服务。 默认不包含小程序插件,需要另外单独购买插件。 模板安装步骤 1、请将安装包Z
立即学习“Python免费学习笔记(深入)”;
- 客户端:直接调用s.connect((host, port))发起三次握手
- 服务端:先s.listen(5)进入监听状态(5为等待队列长度),再用conn, addr = s.accept()阻塞等待并接收新连接
- accept返回的新套接字conn专用于与该客户端通信,原套接字s继续监听其他连接
收发数据(send / recv)
连接建立后,双方通过字节流交换信息,注意编码与缓冲区控制:
- Python 3中send()和recv()只接受bytes类型,字符串需用.encode('utf-8')
- recv(1024)表示最多读取1024字节,实际可能更少,需循环处理完整消息
- TCP无消息边界,应用层需自行定义分隔符(如换行符)或头部长度字段,否则容易粘包
关闭连接时,推荐先s.shutdown(socket.SHUT_RDWR)再s.close(),确保数据发送完毕且资源释放干净。不复杂但容易忽略。










