问个关于UDP传输的问题“心跳包”可不可以是单向的
大家好在下请教一个问题假若说,GPRS模块已经和服务器连接成功了。然后在模块这边每隔10S会给服务器上传一个数据,(说明一下,这个服务器只做接受数据不会回复任何数据给GPRS模块),那请问是不是过一段时间后模块和服务器就会失去链接了? 俺的意思是说 “心跳包”可不可以是单向的
请问有人知道吗? 谢谢 UDP是无连接的不可靠传输协议。
即发送端把数据打包,写上目的地址(IP/Port)丢出去,就不管了。目标是否收到这个数据包,收到后数据对不对;如果按顺序丢出去N包,接收端收到否,接受顺序如何。以上,UDP皆不保证。
最差情况就是中间路由全部Drop,接收端什么都没收到,这也是符合UDP协议的事情。
以上,请根据你的应用判定自定义的协议的合理性。 谢谢1楼的回答 同意1楼
心跳包和具体协议无关,主要是维持GGSN里边动态分配的模块端口到外网端口的映射关系,由于端口总数有限,所以超过一定时间这个端口没有数据转发的话,系统会删除这个对应关系,外网端口重新分配给别人使用,如果这时再要使用,需要再次申请。心跳包就是避免这个映射关系被自动删除的。 回复【3楼】Appcat苹果猫
同意1楼
心跳包和具体协议无关,主要是维持GGSN里边动态分配的模块端口到外网端口的映射关系,由于端口总数有限,所以超过一定时间这个端口没有数据转发的话,系统会删除这个对应关系,外网端口重新分配给别人使用,如果这时再要使用,需要再次申请。心跳包就是避免这个映射关系被自动删除的。
-----------------------------------------------------------------------
分析正确。 谢谢各位的回答,那就是说光光GPRS模块给服务器发数据还是不能维持链接,必须是服务器也要给GPRS模块发送数据才行。也就是双方必须进行数据的传送! 光光GPRS模块给服务器发数据是“足以”维持链接,特别是TCP协议,虽然发送动作是单向的,但是TCP协议本身是握手的,就是双向都有流量的。 哦!谢谢猫老大的回答 得区分tcp还是udp,配置上都是gprs终端给服务器发心跳,是单向的,
在模块这边每隔10S会给服务器上传一个数据,如果是tcp连接,gprs是不会掉线的,
除非服务器宕掉了 谢谢各位高手 学习了。谢谢 单向发心跳包足以维持 GPRS 或 NAT 的网关 UDP 端口映射
但你总得有个反馈机制才真正有数据通讯的意义,服务器完全不向终端发出信息的话,很容易就会因为一些简单的故障导致程序逻辑上的连接丢失,很可能一段时间後,你会发现几乎所有的终端都已经死活不知了——而你还没办法简单的解决它
最好还是重新规划一下这个数据传输的架构 同意水猫,所以建议还是使用TCP协议,自己需要做的数据差错控制工作量可以忽略不计。 回复【12楼】Appcat 苹果猫
-----------------------------------------------------------------------
咨询一下,有没有便宜些的短信模块?收到的短信通过串口发出来,串口收到的内容通过短信发出去。 任何一个模块,短信都是从串口进出的,尽管挑最便宜的好了,二手的TC35i品相好的才70元。当然短信的编解码还是要自己在外部做好的。 不好意思,没说清楚,如果直接和gsm模块打交道,要用到at指令,我们想要的是类似于“透传”这样的模块,不用直接处理at指令。
模块引出的就是rs232接口,收到短信后直接从串口把短信的“文本内容”发出来,不用查询,也不用解码。
不知道有没有这样的模块。 你说的这种是短信DTU,出货量很小,没有便宜的,价格是模块的很多倍。 回复【13楼】javenreal
-----------------------------------------------------------------------
用W801模块,满足您的要求 谢谢解答回复【3楼】Appcat苹果猫
----------------------------------------------------------------------- 学习下 学习了 {:handshake:}
页:
[1]