wrang_1 发表于 2010-3-3 16:04:13

问个关于UDP传输的问题“心跳包”可不可以是单向的

大家好在下请教一个问题
      假若说,GPRS模块已经和服务器连接成功了。然后在模块这边每隔10S会给服务器上传一个数据,(说明一下,这个服务器只做接受数据不会回复任何数据给GPRS模块),那请问是不是过一段时间后模块和服务器就会失去链接了? 俺的意思是说 “心跳包”可不可以是单向的
请问有人知道吗? 谢谢

dr2001 发表于 2010-3-3 16:46:32

UDP是无连接的不可靠传输协议。

即发送端把数据打包,写上目的地址(IP/Port)丢出去,就不管了。目标是否收到这个数据包,收到后数据对不对;如果按顺序丢出去N包,接收端收到否,接受顺序如何。以上,UDP皆不保证。

最差情况就是中间路由全部Drop,接收端什么都没收到,这也是符合UDP协议的事情。

以上,请根据你的应用判定自定义的协议的合理性。

wrang_1 发表于 2010-3-3 16:52:19

谢谢1楼的回答

Appcat 发表于 2010-3-3 16:54:20

同意1楼

心跳包和具体协议无关,主要是维持GGSN里边动态分配的模块端口到外网端口的映射关系,由于端口总数有限,所以超过一定时间这个端口没有数据转发的话,系统会删除这个对应关系,外网端口重新分配给别人使用,如果这时再要使用,需要再次申请。心跳包就是避免这个映射关系被自动删除的。

wuzhujian 发表于 2010-3-3 16:56:28

回复【3楼】Appcat苹果猫
同意1楼
心跳包和具体协议无关,主要是维持GGSN里边动态分配的模块端口到外网端口的映射关系,由于端口总数有限,所以超过一定时间这个端口没有数据转发的话,系统会删除这个对应关系,外网端口重新分配给别人使用,如果这时再要使用,需要再次申请。心跳包就是避免这个映射关系被自动删除的。
-----------------------------------------------------------------------

    分析正确。

wrang_1 发表于 2010-3-3 17:00:46

谢谢各位的回答,那就是说光光GPRS模块给服务器发数据还是不能维持链接,必须是服务器也要给GPRS模块发送数据才行。也就是双方必须进行数据的传送!

Appcat 发表于 2010-3-3 17:06:50

光光GPRS模块给服务器发数据是“足以”维持链接,特别是TCP协议,虽然发送动作是单向的,但是TCP协议本身是握手的,就是双向都有流量的。

wrang_1 发表于 2010-3-3 17:18:09

哦!谢谢猫老大的回答

comway 发表于 2010-3-3 17:52:34

得区分tcp还是udp,配置上都是gprs终端给服务器发心跳,是单向的,
在模块这边每隔10S会给服务器上传一个数据,如果是tcp连接,gprs是不会掉线的,
除非服务器宕掉了

astudent 发表于 2010-3-3 19:48:32

谢谢各位高手

gprs_new 发表于 2010-3-3 19:49:44

学习了。谢谢

watercat 发表于 2010-3-3 20:28:24

单向发心跳包足以维持 GPRS 或 NAT 的网关 UDP 端口映射

但你总得有个反馈机制才真正有数据通讯的意义,服务器完全不向终端发出信息的话,很容易就会因为一些简单的故障导致程序逻辑上的连接丢失,很可能一段时间後,你会发现几乎所有的终端都已经死活不知了——而你还没办法简单的解决它

最好还是重新规划一下这个数据传输的架构

Appcat 发表于 2010-3-3 21:31:10

同意水猫,所以建议还是使用TCP协议,自己需要做的数据差错控制工作量可以忽略不计。

javenreal 发表于 2010-3-4 11:07:57

回复【12楼】Appcat 苹果猫
-----------------------------------------------------------------------
咨询一下,有没有便宜些的短信模块?收到的短信通过串口发出来,串口收到的内容通过短信发出去。

Appcat 发表于 2010-3-4 12:30:18

任何一个模块,短信都是从串口进出的,尽管挑最便宜的好了,二手的TC35i品相好的才70元。当然短信的编解码还是要自己在外部做好的。

javenreal 发表于 2010-3-4 12:48:50

不好意思,没说清楚,如果直接和gsm模块打交道,要用到at指令,我们想要的是类似于“透传”这样的模块,不用直接处理at指令。

模块引出的就是rs232接口,收到短信后直接从串口把短信的“文本内容”发出来,不用查询,也不用解码。

不知道有没有这样的模块。

Appcat 发表于 2010-3-4 12:51:24

你说的这种是短信DTU,出货量很小,没有便宜的,价格是模块的很多倍。

comway 发表于 2010-3-4 18:12:28

回复【13楼】javenreal
-----------------------------------------------------------------------

用W801模块,满足您的要求

ysdaniel 发表于 2010-6-1 08:54:26

谢谢解答回复【3楼】Appcat苹果猫
-----------------------------------------------------------------------

swustlx86 发表于 2010-6-1 13:48:34

学习下

hailin0716 发表于 2013-7-14 19:15:53

学习了   {:handshake:}
页: [1]
查看完整版本: 问个关于UDP传输的问题“心跳包”可不可以是单向的