请教苹果猫一个问题,有关dtu可靠udp传输的
现在我手上有个sim900b的开发板,有一台有公网ip的电脑,我现在想实现的是udp可靠传输。现在我能把我要发的文件拆成一个个udp包发送,但是我没法通过udp给我的dtu发送数据。我查过dtu上的ip地址,是一个172开头的内网地址,而我上位机收到的是我另外一个外网地址(合肥联通的地址)。
我就想问下,我如果想通过udp实现上位机给dtu发送数据,是否可行?
1、我不是苹果猫
2、你说的DTU应该是指你的sim900b开发板吧。
3、udp是点到点的协议,肯定可以互相通信。也就是server可以给你的sim900b的板子发信息。
4、既然要可靠传输,为什么不用TCP。 4、既然要可靠传输,为什么不用TCP。
呵呵,已经有人回答了,俺就偷下懒了{:lol:} 守护者 发表于 2012-3-27 09:04 static/image/common/back.gif
1、我不是苹果猫
2、你说的DTU应该是指你的sim900b开发板吧。
3、udp是点到点的协议,肯定可以互相通信。也 ...
tcp慢啊,所以我想用UDP。我用vb.net写程序,现在已经有一个对udp发送的较为可靠的机制,应该能保证不丢包(丢包重传机制)。
还有一个问题就是,我在透传的模式下(udp透传模式),会不会收不到远端发过来的udp数据(就是透传的时候是不是会有什么回应,我不大懂啊!)。可不可以解释一下透传?这个我理解的比较肤浅。我的理解就是设置单包大小,发包的间隔时间,然后把要发的数据丢到串口了事。我现在比较关心的就是这么快的给串口发数据,设备的缓冲有多少,会不会当机之类的问题? Appcat 发表于 2012-3-27 09:09 static/image/common/back.gif
4、既然要可靠传输,为什么不用TCP。
呵呵,已经有人回答了,俺就偷下懒了 ...
也问下猫神吧?
tcp慢啊,所以我想用UDP。我用vb.net写程序,现在已经有一个对udp发送的较为可靠的机制,应该能保证不丢包(丢包重传机制)。
还有一个问题就是,我在透传的模式下(udp透传模式),会不会收不到远端发过来的udp数据(就是透传的时候是不是会有什么回应,我不大懂啊!)。可不可以解释一下透传?这个我理解的比较肤浅。我的理解就是设置单包大小,发包的间隔时间,然后把要发的数据丢到串口了事。我现在比较关心的就是这么快的给串口发数据,设备的缓冲有多少,会不会当机之类的问题? 1 透传:顾名思义就是透明传输了,就是你这个应用而言,不用管具体怎么实现无线发送的,往串口丢数据他就给你发出去,这就是透传。
2 你说什么设备没缓冲,只是大小而已。 如果你买市面上现成的DTU,默认缓冲大小一般是1KB,这个大小可设置,当然不是无限的。
3 你发送的频率,只能在无线网络(DTU)速率以下(一般串口速率比这个大)。
4 无线网络有这样那样的问题,你能保证7x24小时不掉线,也不能保证1年不掉线。当机肯定存在,你要做的是尽可能完美控制。 守护者 发表于 2012-3-28 09:55 static/image/common/back.gif
1 透传:顾名思义就是透明传输了,就是你这个应用而言,不用管具体怎么实现无线发送的,往串口丢数据他就给 ...
一般,你设置udp传输的时候,大概一个包多大?我现在分包在500~600字节比较稳定,但是单包到1000感觉就设备不是很稳定了。 要想用UDP可靠传输,那得自己加协议啊;很是麻烦啊
还是使用TCP吧,使用CDMA吧,CDMA的上行比较快啊 这个问题以前和一个合肥的学生解释过,没想到又有人问同样的问题,感觉楼主应该是哪个学生吧,{:titter:}
DTU设备获取得到的地址是GPRS模块的APN网络地址,服务器想直接往这个设备发送数据,应该是使用这个DTU设备对外的公网地址(也就是外网地址(合肥联通的地址))。而且,UDP通信的特点要求中间路由器不断保持它的会话,因此,即使在不需要发送数据的时候,也要间隔一段时间发包给服务器来保持这个会话,否则,中间的路由器在收到服务器的数据包时,不知道这个UDP包应该投递给谁,因为UDP是无连接的。这个只是解决了服务器要往DTU设备发包的情况。
还有更复杂的情况,就是如果要用UDP来发送大数据文件,你又要可靠传输,哪你需要自己对数据进行分片处理,给每个数据包一个序列ID,然后在发送端增加一个ACK WINDOW,以此来确认哪些包需要重传(一般丢包率达到10%以上),这个重传机制做起来后,你会发现你最后的速度其实和TCP相差无几了,呵呵。
综上,我还是认为TCP会比较好,UDP在TCP/IP的优势应该是能直接点对点传输,不需要中间服务器做转发,这种情况就会比TCP快。但你这种情况,哪里能更快呢?
占位学习。 lqs10 发表于 2012-3-29 10:03 static/image/common/back.gif
这个问题以前和一个合肥的学生解释过,没想到又有人问同样的问题,感觉楼主应该是哪个学生吧,
...
原来对通信这块理解比较书本,但我还是想把udp这块做起来。当做学习吧,而且觉得做TCP传输的话,没有udp的挑战大!个人观点,见笑了。
还有现在我还遇到的一个问题就是,我向串口发数据时,我用的是AT+CIPSEND=<length>,就是指定数据包长度然后发送。
在包比较小的情况下,设备的响应还是很好的,但是当我发的包比较大的时候,响应上就感觉不大好了。这个原因是什么?我用的编程工具是vs2008,用的是Serialport这个类。
问题1:设备响应一个包的时间大概有多久?感觉发的数据包大了的话,很容易出现发送出错。
问题2:最近看了个udp扩展模式是个啥东西,感觉不出来是个啥玩意?
问题3:我的一个DTU设备安放在远端,我如何在远程配置所要连接的公网服务器,也就是怎么一开始就找到所连的服务器(ip地址和端口),因为我的服务器公网地址会变的吧。 lqs10 发表于 2012-3-29 10:03 static/image/common/back.gif
这个问题以前和一个合肥的学生解释过,没想到又有人问同样的问题,感觉楼主应该是哪个学生吧,
...
对的,合肥工业大学的大三学生! 我现在觉得是我编程上对发过来的信息处理有问题,我原来是用字节接收的,也就是char转stirng,然后就会有很多的乱码,我应该要把命令这些东西转成UNICODE的! 本帖最后由 lqs10 于 2012-3-30 20:50 编辑
UDP报文一般不能超过1024字节,否则容易引起封包分片,因此传输不可靠。
对于GPRS设备,上行速度是个问题,GPRS模块的上行速度能达到1.5K/S 以上的少之又少,所以对模块的选择是个关键。目前已经知道的用英飞凌平台做数传模块肯定就是个失败的产品,因为平台的缺陷摆在哪。
用UDP来做可靠大文件传输,能做出稳定的产品,哪要恭喜您,修炼成功了。因为你基本上等于把TCP协议栈的实现自己做了一遍,否则你做的UDP比TCP要慢,不信,我们试试。
lqs10 发表于 2012-3-30 12:20 static/image/common/back.gif
UDP报文一般不能超过1024字节,否则容易引起封闭分片,因此传输不可靠。
对于GPRS设备,上行速度是个问题, ...
{:smile:} 好的,谢谢,我会努力的! 要可靠性传输,建议你还是用TCP,因为你用UDP传输在自行加上握手信号来确保可靠性,最后你得到的东西就是个类似TCP协议的方式,若是你要传送大量的资料,直接用TCP会比较方便 pisgah 发表于 2012-4-1 11:22 static/image/common/back.gif
要可靠性传输,建议你还是用TCP,因为你用UDP传输在自行加上握手信号来确保可靠性,最后你得到的东西就是个 ...
100多KB算不算大的文件? UDP可以做的很可靠,甚至比TCP简单,就我最近的了解,
TCP基于流协议。会出现粘包现象,UDP是以包的形式发送的,目前还没有出现过粘包这现象,(听说也会有,但是概率很小)
可以使用UDP模拟TCP的滑动窗口发送,如果是发送文件的话,建议使用UDP,不知道楼主现在解决的怎么样了啊?
页:
[1]