news 2026/6/15 18:36:57

网络编程问题:TCP/UDP 连接异常解决方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
网络编程问题:TCP/UDP 连接异常解决方案

TCP/UDP 连接异常解决方案代码示例

以下是一个基于 Python 的 TCP/UDP 连接异常处理代码示例,涵盖常见的连接异常场景(如超时、连接拒绝、端口占用等),并提供重试机制和日志记录功能。

TCP 连接异常处理
import socket import time import logging logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) def tcp_connect_with_retry(host, port, max_retries=3, timeout=5): retry_count = 0 while retry_count < max_retries: try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(timeout) sock.connect((host, port)) logger.info(f"TCP connection established to {host}:{port}") return sock except socket.timeout: logger.warning(f"TCP connection timeout (attempt {retry_count + 1})") except ConnectionRefusedError: logger.error(f"Connection refused by {host}:{port}") except socket.error as e: logger.error(f"Socket error: {str(e)}") finally: retry_count += 1 time.sleep(1) raise ConnectionError(f"Failed to establish TCP connection after {max_retries} retries")

https://www.zhihu.com/zvideo/1994260861682997179/
https://www.zhihu.com/zvideo/1994260861682997179
https://www.zhihu.com/zvideo/1994260860697341967/
https://www.zhihu.com/zvideo/1994260860697341967
https://www.zhihu.com/zvideo/1994260857056671243/
https://www.zhihu.com/zvideo/1994260857056671243
https://www.zhihu.com/zvideo/1994260851021071994/
https://www.zhihu.com/zvideo/1994260851021071994
https://www.zhihu.com/zvideo/1994260850433886062/
https://www.zhihu.com/zvideo/1994260850433886062
https://www.zhihu.com/zvideo/1994260847934066912/
https://www.zhihu.com/zvideo/1994260847934066912
https://www.zhihu.com/zvideo/1994260843584570191/
https://www.zhihu.com/zvideo/1994260843584570191
https://www.zhihu.com/zvideo/1994260839423832246/
https://www.zhihu.com/zvideo/1994260839423832246
https://www.zhihu.com/zvideo/1994260838081664990/
https://www.zhihu.com/zvideo/1994260838081664990
https://www.zhihu.com/zvideo/1994260835078529378/
https://www.zhihu.com/zvideo/1994260835078529378
https://www.zhihu.com/zvideo/1994260833497273482/
https://www.zhihu.com/zvideo/1994260833497273482
https://www.zhihu.com/zvideo/1994260832259966840/
https://www.zhihu.com/zvideo/1994260832259966840
https://www.zhihu.com/zvideo/1994260832532583874/
https://www.zhihu.com/zvideo/1994260832532583874
https://www.zhihu.com/zvideo/1994260827105146355/
https://www.zhihu.com/zvideo/1994260827105146355
https://www.zhihu.com/zvideo/1994260823569364542/
https://www.zhihu.com/zvideo/1994260823569364542
https://www.zhihu.com/zvideo/1994260822684356958/
https://www.zhihu.com/zvideo/1994260822684356958
https://www.zhihu.com/zvideo/1994260818049655700/
https://www.zhihu.com/zvideo/1994260818049655700
https://www.zhihu.com/zvideo/1994260817747674698/
https://www.zhihu.com/zvideo/1994260817747674698
https://www.zhihu.com/zvideo/1994260815390463543/
https://www.zhihu.com/zvideo/1994260815390463543
https://www.zhihu.com/zvideo/1994260811632358143/
https://www.zhihu.com/zvideo/1994260811632358143

UDP 连接异常处理
def udp_send_with_retry(host, port, data, max_retries=3, timeout=5): retry_count = 0 while retry_count < max_retries: try: sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.settimeout(timeout) sock.sendto(data.encode(), (host, port)) logger.info(f"UDP data sent to {host}:{port}") return sock except socket.timeout: logger.warning(f"UDP send timeout (attempt {retry_count + 1})") except socket.error as e: logger.error(f"UDP socket error: {str(e)}") finally: retry_count += 1 time.sleep(1) raise ConnectionError(f"Failed to send UDP data after {max_retries} retries")

https://www.zhihu.com/zvideo/1994266399967815160/
https://www.zhihu.com/zvideo/1994266399967815160
https://www.zhihu.com/zvideo/1994266394804638799/
https://www.zhihu.com/zvideo/1994266394804638799
https://www.zhihu.com/zvideo/1994266393525372736/
https://www.zhihu.com/zvideo/1994266393525372736
https://www.zhihu.com/zvideo/1994266392124466186/
https://www.zhihu.com/zvideo/1994266392124466186
https://www.zhihu.com/zvideo/1994266391612769736/
https://www.zhihu.com/zvideo/1994266391612769736
https://www.zhihu.com/zvideo/1994266391889604666/
https://www.zhihu.com/zvideo/1994266391889604666
https://www.zhihu.com/zvideo/1994266389448504132/
https://www.zhihu.com/zvideo/1994266389448504132
https://www.zhihu.com/zvideo/1994266387447832880/
https://www.zhihu.com/zvideo/1994266387447832880
https://www.zhihu.com/zvideo/1994266387040981461/
https://www.zhihu.com/zvideo/1994266387040981461
https://www.zhihu.com/zvideo/1994266386592199141/
https://www.zhihu.com/zvideo/1994266386592199141
https://www.zhihu.com/zvideo/1994266373937967153/
https://www.zhihu.com/zvideo/1994266373937967153
https://www.zhihu.com/zvideo/1994266375666034264/
https://www.zhihu.com/zvideo/1994266375666034264
https://www.zhihu.com/zvideo/1994266370750301136/
https://www.zhihu.com/zvideo/1994266370750301136
https://www.zhihu.com/zvideo/1994266368053359641/
https://www.zhihu.com/zvideo/1994266368053359641
https://www.zhihu.com/zvideo/1994266368544096292/
https://www.zhihu.com/zvideo/1994266368544096292
https://www.zhihu.com/zvideo/1994266367365490383/
https://www.zhihu.com/zvideo/1994266367365490383
https://www.zhihu.com/zvideo/1994266365352248655/
https://www.zhihu.com/zvideo/1994266365352248655
https://www.zhihu.com/zvideo/1994266364907635656/
https://www.zhihu.com/zvideo/1994266364907635656
https://www.zhihu.com/zvideo/1994266364546942673/
https://www.zhihu.com/zvideo/1994266364546942673
https://www.zhihu.com/zvideo/1994266364588873142/
https://www.zhihu.com/zvideo/1994266364588873142

端口占用检测
def is_port_in_use(port, protocol='tcp'): try: if protocol.lower() == 'tcp': sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) else: sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.bind(('0.0.0.0', port)) sock.close() return False except socket.error: return True
使用示例
if __name__ == "__main__": # TCP 示例 try: tcp_sock = tcp_connect_with_retry("example.com", 80) tcp_sock.sendall(b"GET / HTTP/1.1\r\nHost: example.com\r\n\r\n") response = tcp_sock.recv(4096) print(response.decode()) except Exception as e: print(f"TCP error: {str(e)}") # UDP 示例 try: udp_sock = udp_send_with_retry("example.com", 53, "test data") data, addr = udp_sock.recvfrom(1024) print(f"Received UDP data from {addr}: {data.decode()}") except Exception as e: print(f"UDP error: {str(e)}") # 端口检测 print(f"Port 80 in use (TCP): {is_port_in_use(80)}") print(f"Port 53 in use (UDP): {is_port_in_use(53, 'udp')}")
关键功能说明
  • 自动重试机制:通过max_retries参数控制最大重试次数
  • 超时处理:通过timeout参数设置连接/发送超时时间
  • 错误分类处理:区分超时、连接拒绝和其他socket错误
  • 日志记录:使用标准logging模块记录连接状态
  • 端口检测:支持检测TCP/UDP端口占用情况

该代码可通过调整参数适应不同网络环境,建议根据实际需求修改重试策略和超时时间。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 13:52:26

MediaPipe Pose为何选择CPU优化?能效比实测数据揭秘

MediaPipe Pose为何选择CPU优化&#xff1f;能效比实测数据揭秘 1. 引言&#xff1a;AI人体骨骼关键点检测的现实挑战 随着AI在健身指导、动作捕捉、虚拟试衣和人机交互等场景中的广泛应用&#xff0c;实时人体姿态估计已成为一项基础且关键的技术能力。其中&#xff0c;Goog…

作者头像 李华
网站建设 2026/6/12 16:15:09

Qwen2.5-VL-32B:AI视觉智能新突破,看懂视频会分析

Qwen2.5-VL-32B&#xff1a;AI视觉智能新突破&#xff0c;看懂视频会分析 【免费下载链接】Qwen2.5-VL-32B-Instruct 项目地址: https://ai.gitcode.com/hf_mirrors/Qwen/Qwen2.5-VL-32B-Instruct 导语&#xff1a;Qwen2.5-VL-32B-Instruct多模态大模型正式发布&#x…

作者头像 李华
网站建设 2026/6/15 12:39:24

MediaPipe Pose部署成功率100%?零外部依赖方案实测分享

MediaPipe Pose部署成功率100%&#xff1f;零外部依赖方案实测分享 1. 引言&#xff1a;AI人体骨骼关键点检测的落地挑战 在计算机视觉领域&#xff0c;人体姿态估计&#xff08;Human Pose Estimation&#xff09; 是一项基础且关键的技术&#xff0c;广泛应用于健身动作识别…

作者头像 李华
网站建设 2026/6/15 16:37:36

MediaPipe Pose实战测评:轻量级CPU模型精度表现全面评测

MediaPipe Pose实战测评&#xff1a;轻量级CPU模型精度表现全面评测 1. 引言&#xff1a;为何选择MediaPipe Pose进行姿态检测&#xff1f; 1.1 行业背景与技术痛点 在计算机视觉领域&#xff0c;人体姿态估计&#xff08;Human Pose Estimation&#xff09;是理解人类行为的…

作者头像 李华
网站建设 2026/6/15 12:40:54

基于Elasticsearch的日志可视化分析项目应用

一次搞定日志难题&#xff1a;用 Elasticsearch 构建真正能“说话”的可视化分析系统你有没有过这样的经历&#xff1f;凌晨两点&#xff0c;线上服务突然告警&#xff0c;用户反馈接口超时。你火速登录服务器&#xff0c;一边tail -f查日志&#xff0c;一边在几十个微服务之间…

作者头像 李华
网站建设 2026/6/15 13:28:56

FlashAI:免费本地多模态大模型一键部署工具

FlashAI&#xff1a;免费本地多模态大模型一键部署工具 【免费下载链接】flashai_vision 项目地址: https://ai.gitcode.com/FlashAI/vision 导语&#xff1a;FlashAI多模态版整合包正式发布&#xff0c;以"无需配置、完全离线、永久免费"为核心优势&#xf…

作者头像 李华