树莓派、python的socket断线重连的问题
# -*- coding: utf-8 -*-
import socket
import time
try:
SERVER_IP = "123.212.125.132"
SERVER_PORT = 6811
server_addr = (SERVER_IP, SERVER_PORT)
socket_tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket_tcp.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
while True:
try:
print("Connecting to server @ %s:%d..." % (SERVER_IP, SERVER_PORT))
socket_tcp.connect(server_addr)
break
except socket.error:
print("Can't connect to server,try it latter!")
time.sleep(1)
continue
print("Receiving package...") # socket 连接成功,等待接收信息
while True:
try:
number = socket_tcp.send(“hello world")
print number
time.sleep(5)
except socket.error:
print ("socket error")
except:
print ("other error")
except:
pass大家看一看上面的代码,我的代码主要是作为socket的客户端,链接远程服务器,每隔5秒钟向远程服务器发送一次“hello world”,在发送的过程中,如果出现socket链接错误,就在屏幕上输出“socket error”。
现在的情况是这样,我在台式电脑上使用python调试器PyCharm来运行程序,正常链接socket以后,假设出先网络错误,比如拔掉网线或者没有网络了,这时候按道理来说socket应该是断开连接的,假如我拔掉网线经过大约30秒后,PyCharm才输出“socket error”。
基于在电脑端的情况,我把相同的程序拷贝到“”树莓派“”(树莓派系统是自带的raspbian)上运行,相同情况下,比如拔掉网线,要经过20多分钟才能输出“socket error”。
我现在想就是想在socket连接出现错误的时候,比如拔掉网线、网络错误等导致的socket连接错误,能够迅速的检测到socket连接错误,然后进行socket连接,现在最大的问题就是不知道如何监测socket的链接状态,求各位大佬指教!~
相关推荐
低成本虚拟示教器实战:基于树莓派与RoboDK的工业机器人离线编程方案
示教器是工业机器人进行手动操纵、点位示教与程序调试的核心人机交互设备。其工作原理是通过物理按键、摇杆与触摸屏,将操作指令转换为机器人控制器可识别的信号,实现对机器人运动的精确控制。传统示教器虽功能强大,但高昂的成本与有限的便携性,使其在教育培训、方案预验证等场景中应用受限。为解决这一痛点,基于通用硬件与开源软件的虚拟示教器技术应运而生,它通过软件模拟与网络通信,复刻了核心操控功能,显著降低了学习与开发门槛。本文聚焦于“Peak示教器”这一追求极致性价比的复刻方案,详细阐述了如何利用树莓派、游戏手柄等常见硬件
树莓派智能小车实战:WIFI图像传输与远程控制全解析
无线通信与计算机视觉是物联网和机器人领域的核心技术。WIFI凭借其普及性和成熟协议栈,成为中短距离数据传输的主流方案,而OpenCV等视觉库则为设备赋予了“感知”能力。在嵌入式系统中,通过串口通信实现主控制器与WIFI模块的联动,能够构建稳定、低延迟的数据链路,这对于远程监控、智能巡检等场景具有重要价值。本文以树莓派结合ESP8266和OpenCV的智能小车项目为例,深入拆解了从硬件选型、环境搭建到代码实现的完整流程,为开发者提供了一套可复用的嵌入式视觉与无线控制解决方案。
MQTT客户端性能对比:C、C++与Python在连接稳定性与资源开销的深度测试
MQTT作为一种轻量级的发布/订阅消息传输协议,是物联网通信的核心技术之一。其工作原理基于TCP/IP协议栈,通过心跳机制(Keep Alive)维持长连接,确保消息的可靠传输。在工业物联网、车联网等高并发、高可靠场景下,客户端的连接稳定性、断线重连机制及资源管理能力直接决定了系统的整体性能与可用性。本次测试聚焦于不同语言实现的MQTT客户端——包括底层的C语言库、面向对象的C++封装以及开发效率高的Python实现,通过设计高频短连接、长连接稳定性及并发负载等测试场景,量化对比其在连接延迟、断线检测、内存
基于Socket与OpenCV的互联网摄像测量系统:从架构设计到工程实践
计算机视觉与网络通信是构建现代智能系统的两大基石。计算机视觉通过图像处理技术提取和理解视觉信息,而网络通信则实现了数据的远程传输与设备协同。将两者结合,便催生了远程视觉测量、工业物联网等关键技术,其核心价值在于突破地理限制,实现分布式、智能化的感知与控制。本文聚焦于如何设计一个稳定、实时的互联网摄像测量系统,深入探讨了基于Socket的自定义应用层协议设计、OpenCV图像处理算法以及多线程服务器架构。通过结合【图像处理】与【网络通信】技术,系统实现了从图像采集、传输、处理到结果反馈的完整闭环,可广泛应用于
Python嵌入式开发实战:从MicroPython到Linux,选型、工具与踩坑全攻略
嵌入式开发中,编程语言的选择始终是硬件工程师与软件开发者热议的话题。C语言凭借其底层控制力长期占据主导,而Python则以其高效的开发效率和丰富的生态在特定场景中异军突起。理解Python在嵌入式系统中的定位,需要从MCU裸机、RTOS到嵌入式Linux三个层级分别考量。MicroPython作为Python 3的精简实现,让ESP32、STM32等主流芯片具备了快速原型验证与复杂逻辑处理能力;而在嵌入式Linux平台上,完整的Python解释器配合OpenCV、NumPy等库,则可胜任边缘计算与AI推理任



