我正在致力于一个涉及GSM/GPRS模块的项目,其作用是通过互联网使用TCP-IP和Modbus协议将客户端与某些设备连接。现在我正在研究TCP连接方案。通过GPRS的TCP-IP与Modbus
据我了解,如果一段时间内没有任何流量,GSM网络会自动关闭TCP连接。
我想检测和维护TCP连接尽可能可靠。还要检测半开连接。
连接过程如下:我的GSM模块充当服务器,所以它在端口502上打开套接字并等待客户端读取数据。客户端可以在3分钟或更长时间内定期读取数据。
当客户端与我的模块连接时,它会请求一些数据,模块会发送请求的数据并等待其他请求,并保持连接处于打开状态。
现在,如果由于其他原因(由于电源故障,GSM网络等)而导致连接断开,客户端需要能够再次与模块连接。该模块必须检测断开的连接并且必须采取措施以便客户端可以再次重新连接到它
为了检测断开的连接,模块定期向客户端发送一些虚拟数据并检查客户端是否收到该数据。如果没有,则必须重新建立tcp连接。
问题是:如何解释这个“重新建立”连接?
我应该关闭当前的TCP连接,并打开一个新的,这意味着再次监听端口502?
我应该关闭当前的TCP连接并尝试连接到上一个有效的TCP连接提供的客户端的端口和IP吗?
问题是,该模块必须尽快提供以回答客户的要求;这就是为什么我需要尽快使TCP连接正常工作的原因。
PS。该模块仅支持AT命令(Quectel M95模块),因此我无法访问TCP堆栈的所有功能。 谢谢。 (我在TCP堆栈新的,所以我可能使用不当含义技术术语)