当前位置: 首页 > news >正文

Socket网络编程:TCP/UDP原理、服务端与客户端手写实战

博客导语

Socket是所有网络请求的底层,HTTP、爬虫、接口请求本质都是封装后的Socket通信。90%爬虫开发者只会调库不懂底层,遇到粘包、断连、超时问题完全无从下手。本文从零手写TCP、UDP服务端与客户端,吃透网络通信底层逻辑。


一、Socket核心概念

Socket(套接字)是操作系统提供的网络通信接口,通过「IP+端口」实现跨设备数据传输。

两大主流协议:

  • TCP:面向连接、可靠、三次握手、四次挥手、无数据丢失、流式传输

  • UDP:无连接、不可靠、速度快、数据包传输、适合直播/语音


二、TCP通信完整实战(一对一通信)

TCP服务端

import socket # 1. 创建socket对象 server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2. 绑定IP和端口 server.bind(("127.0.0.1", 8888)) # 3. 开启监听 server.listen(5) print("服务端启动成功,等待客户端连接...") # 4. 等待客户端连接 conn, addr = server.accept() print(f"客户端{addr}已连接") # 5. 收发数据 while True: data = conn.recv(1024).decode("utf-8") if not data: break print("收到客户端消息:", data) conn.send("服务端已收到!".encode("utf-8")) conn.close() server.close()

TCP客户端

import socket client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.connect(("127.0.0.1", 8888)) client.send("Hello Socket".encode("utf-8")) res = client.recv(1024).decode("utf-8") print("服务端回复:", res) client.close()

三、UDP通信实战(无连接通信)

UDP服务端

import socket server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) server.bind(("127.0.0.1", 9999)) while True: data, addr = server.recvfrom(1024) print("收到消息:", data.decode("utf-8")) server.sendto("UDP收到".encode("utf-8"), addr)

UDP客户端

import socket client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) client.sendto("UDP测试消息".encode("utf-8"), ("127.0.0.1", 9999))

四、高频面试&避坑总结

  • TCP面向连接、可靠、有序;UDP无连接、高效、可能丢包

  • TCP存在粘包问题,UDP无粘包

  • 爬虫、HTTP、接口全部基于TCP

http://www.gsyq.cn/news/1558862.html

相关文章:

  • 深入解析ColdFire SDRAM控制器:从原理到嵌入式系统内存扩展实战
  • 北京市本地2026年最新黄金回收靠谱门店TOP排行榜+白银回收+铂金回收+彩金回收及联系方式+地址+电话+诚信店铺推荐 - 盛世金银回收
  • 如何快速掌握Illustrator脚本:5分钟批量替换完全指南
  • 达州市2026年最新黄金回收+白银回收+铂金回收+彩金回收门店TOP排行榜+推荐及联系方式+地址+电话+靠谱店铺指南 - 大熊猫898989
  • 从GSM手机平台看嵌入式系统分层架构与模块化开发实践
  • 小程序问诊链路交互功能优化记录
  • 【毕业设计】基于 Python 的教育习题资源管理系统的设计与实现 基于 Python 的题包整合与智能处理系统(源码+文档+远程调试,全bao定制等)
  • AI工具涨价风波背后的用户主权与确定性危机
  • 稀疏嵌入调制技术:视觉语言模型去偏新方法
  • Embedding微调实战:从语义校准到业务效果归因
  • 如何高效转换3DS游戏格式:专业用户的完整实战指南
  • 腾讯混元HunYuan3D-1.0开源:文本生成可商用3D网格的工业级实践
  • 2025网络安全证书全攻略:从入门到进阶,实战与管理的选择指南
  • AI Max 395 部署 AgentCPM:MI300X+ROCm6.4 全栈适配实战
  • 为什么选择Dism++:5个核心功能深度解析与实战技巧
  • GPT-5-Codex与具身智能等五项AI技术工程落地实录
  • Qwen2.5-VL行业微调:物理归一化与跨模态对齐器重训实战
  • 工业整机价格知多少?华北工控来解读 - mypinpai
  • 32位栈溢出实战:CTFshow pwn052参数传递与后门函数调用分析
  • DPDK高性能交换机深度实践:一次Hugepage碎片化引发的“隐性性能衰退”故障分析
  • 嵌入式硬件设计:从数据手册极限参数与电气特性到稳定系统构建
  • 如何高效使用VR-Reversal:专业用户的完整实战指南
  • 性价比高的防水公司推荐,吉林省雨祥防水工程有限公司怎么样 - mypinpai
  • 深入解析i.MX53xD:经典ARM Cortex-A8 SoC的架构设计与工程实践
  • 2026年6月大牌小样加盟品牌找哪家,头部大牌小样加盟找哪家 - 品牌推荐师
  • 博德之门3模组管理器完全指南:从零开始打造个性化游戏体验
  • MCF5206e嵌入式开发:经典微控制器在工业控制中的平衡之道
  • 嵌入式图形处理实战:像素格式与字节序的底层原理与调试
  • 深入解析恩智浦MAC71x5微控制器:ARM7架构在嵌入式系统中的应用与实战
  • 从逆向工程到爆破登录:Web安全入门实战与防御思路