2026/6/1 6:40:50
网站建设
项目流程
wap网站开发视频教程,google app,google谷歌搜索,苏州企业网站建设服务中心TCP/UDP 连接异常解决方案代码示例以下是一个基于 Python 的 TCP/UDP 连接异常处理代码示例#xff0c;涵盖常见的连接异常场景#xff08;如超时、连接拒绝、端口占用等#xff09;#xff0c;并提供重试机制和日志记录功能。TCP 连接异常处理import socket
import time
i…TCP/UDP 连接异常解决方案代码示例以下是一个基于 Python 的 TCP/UDP 连接异常处理代码示例涵盖常见的连接异常场景如超时、连接拒绝、端口占用等并提供重试机制和日志记录功能。TCP 连接异常处理import socket import time import logging logging.basicConfig(levellogging.INFO) logger logging.getLogger(__name__) def tcp_connect_with_retry(host, port, max_retries3, timeout5): 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(fTCP connection established to {host}:{port}) return sock except socket.timeout: logger.warning(fTCP connection timeout (attempt {retry_count 1})) except ConnectionRefusedError: logger.error(fConnection refused by {host}:{port}) except socket.error as e: logger.error(fSocket error: {str(e)}) finally: retry_count 1 time.sleep(1) raise ConnectionError(fFailed to establish TCP connection after {max_retries} retries)https://www.zhihu.com/zvideo/1994260861682997179/https://www.zhihu.com/zvideo/1994260861682997179https://www.zhihu.com/zvideo/1994260860697341967/https://www.zhihu.com/zvideo/1994260860697341967https://www.zhihu.com/zvideo/1994260857056671243/https://www.zhihu.com/zvideo/1994260857056671243https://www.zhihu.com/zvideo/1994260851021071994/https://www.zhihu.com/zvideo/1994260851021071994https://www.zhihu.com/zvideo/1994260850433886062/https://www.zhihu.com/zvideo/1994260850433886062https://www.zhihu.com/zvideo/1994260847934066912/https://www.zhihu.com/zvideo/1994260847934066912https://www.zhihu.com/zvideo/1994260843584570191/https://www.zhihu.com/zvideo/1994260843584570191https://www.zhihu.com/zvideo/1994260839423832246/https://www.zhihu.com/zvideo/1994260839423832246https://www.zhihu.com/zvideo/1994260838081664990/https://www.zhihu.com/zvideo/1994260838081664990https://www.zhihu.com/zvideo/1994260835078529378/https://www.zhihu.com/zvideo/1994260835078529378https://www.zhihu.com/zvideo/1994260833497273482/https://www.zhihu.com/zvideo/1994260833497273482https://www.zhihu.com/zvideo/1994260832259966840/https://www.zhihu.com/zvideo/1994260832259966840https://www.zhihu.com/zvideo/1994260832532583874/https://www.zhihu.com/zvideo/1994260832532583874https://www.zhihu.com/zvideo/1994260827105146355/https://www.zhihu.com/zvideo/1994260827105146355https://www.zhihu.com/zvideo/1994260823569364542/https://www.zhihu.com/zvideo/1994260823569364542https://www.zhihu.com/zvideo/1994260822684356958/https://www.zhihu.com/zvideo/1994260822684356958https://www.zhihu.com/zvideo/1994260818049655700/https://www.zhihu.com/zvideo/1994260818049655700https://www.zhihu.com/zvideo/1994260817747674698/https://www.zhihu.com/zvideo/1994260817747674698https://www.zhihu.com/zvideo/1994260815390463543/https://www.zhihu.com/zvideo/1994260815390463543https://www.zhihu.com/zvideo/1994260811632358143/https://www.zhihu.com/zvideo/1994260811632358143UDP 连接异常处理def udp_send_with_retry(host, port, data, max_retries3, timeout5): 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(fUDP data sent to {host}:{port}) return sock except socket.timeout: logger.warning(fUDP send timeout (attempt {retry_count 1})) except socket.error as e: logger.error(fUDP socket error: {str(e)}) finally: retry_count 1 time.sleep(1) raise ConnectionError(fFailed to send UDP data after {max_retries} retries)https://www.zhihu.com/zvideo/1994266399967815160/https://www.zhihu.com/zvideo/1994266399967815160https://www.zhihu.com/zvideo/1994266394804638799/https://www.zhihu.com/zvideo/1994266394804638799https://www.zhihu.com/zvideo/1994266393525372736/https://www.zhihu.com/zvideo/1994266393525372736https://www.zhihu.com/zvideo/1994266392124466186/https://www.zhihu.com/zvideo/1994266392124466186https://www.zhihu.com/zvideo/1994266391612769736/https://www.zhihu.com/zvideo/1994266391612769736https://www.zhihu.com/zvideo/1994266391889604666/https://www.zhihu.com/zvideo/1994266391889604666https://www.zhihu.com/zvideo/1994266389448504132/https://www.zhihu.com/zvideo/1994266389448504132https://www.zhihu.com/zvideo/1994266387447832880/https://www.zhihu.com/zvideo/1994266387447832880https://www.zhihu.com/zvideo/1994266387040981461/https://www.zhihu.com/zvideo/1994266387040981461https://www.zhihu.com/zvideo/1994266386592199141/https://www.zhihu.com/zvideo/1994266386592199141https://www.zhihu.com/zvideo/1994266373937967153/https://www.zhihu.com/zvideo/1994266373937967153https://www.zhihu.com/zvideo/1994266375666034264/https://www.zhihu.com/zvideo/1994266375666034264https://www.zhihu.com/zvideo/1994266370750301136/https://www.zhihu.com/zvideo/1994266370750301136https://www.zhihu.com/zvideo/1994266368053359641/https://www.zhihu.com/zvideo/1994266368053359641https://www.zhihu.com/zvideo/1994266368544096292/https://www.zhihu.com/zvideo/1994266368544096292https://www.zhihu.com/zvideo/1994266367365490383/https://www.zhihu.com/zvideo/1994266367365490383https://www.zhihu.com/zvideo/1994266365352248655/https://www.zhihu.com/zvideo/1994266365352248655https://www.zhihu.com/zvideo/1994266364907635656/https://www.zhihu.com/zvideo/1994266364907635656https://www.zhihu.com/zvideo/1994266364546942673/https://www.zhihu.com/zvideo/1994266364546942673https://www.zhihu.com/zvideo/1994266364588873142/https://www.zhihu.com/zvideo/1994266364588873142端口占用检测def is_port_in_use(port, protocoltcp): 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(bGET / HTTP/1.1\r\nHost: example.com\r\n\r\n) response tcp_sock.recv(4096) print(response.decode()) except Exception as e: print(fTCP error: {str(e)}) # UDP 示例 try: udp_sock udp_send_with_retry(example.com, 53, test data) data, addr udp_sock.recvfrom(1024) print(fReceived UDP data from {addr}: {data.decode()}) except Exception as e: print(fUDP error: {str(e)}) # 端口检测 print(fPort 80 in use (TCP): {is_port_in_use(80)}) print(fPort 53 in use (UDP): {is_port_in_use(53, udp)})关键功能说明自动重试机制通过max_retries参数控制最大重试次数超时处理通过timeout参数设置连接/发送超时时间错误分类处理区分超时、连接拒绝和其他socket错误日志记录使用标准logging模块记录连接状态端口检测支持检测TCP/UDP端口占用情况该代码可通过调整参数适应不同网络环境建议根据实际需求修改重试策略和超时时间。