如何知道发送方数据包传输完毕,接受方。。。。不然要下岗了(83分)

  • 主题发起人 主题发起人 cb1997
  • 开始时间 开始时间
C

cb1997

Unregistered / Unconfirmed
GUEST, unregistred user!
如何知道发送方数据包传输完毕,
接受方收到的数据包没有丢包?

如果丢包了,如何判断是重要的数据包还是不重要的??
分不够可以再加,小弟我是初次搞这方面的问题,大家帮帮忙吧!不然要下岗了
 
自己定个传输协议吧。
 
TYZhang
定个协议???那到我在协议中定义 发送方数据包传输完毕?/
接受方收到的数据包没有丢包?
 
郁闷难道没有人帮忙还是都过周末去了呀!
 
用tcp/ip协议不用考虑丢包问题吧
 
艾,刚才贴的信息丢了,又得再写一边.
比如:在你的数据包的头上写入标记,在尾上写上长度与CRC校验码,接受方收到数据后,使用你们之间订的规则(协议),进行校验,如果正确的话,回复你,你如果在指定的时间内收到回复信息,表示发送成功,如果没收到,表示异常,1、进行询问,当询问n次后仍然没有回复;2、重发数据包。重复以上过程直到收到对方的确认信息。
 
用开始的标识符加长度和结束符来判断是否丢包
 
完全同意solonet,如果格式固定,可以根据双方协议来加以具体的判断
 
同意TYZhang,我学过这方面的东西。
 
谢谢同志们的帮忙,特别感谢TYZhang同志!
TYZhang同志
1、进行询问,当询问n次后仍然没有回复;
这样不是很容易造成网络拥塞啊!, 你是如何考虑解决拥塞的问题的呀
 
to cb1997:
这个要看你的系统应用和网络带宽了,一般是经验值。因为每次询问之间肯定要等一下(否则真的会堵塞),等的时间太长或询问的次数太多,在系统要求响应较快的时候不能满足需求,如果等待时间太短或次数太少,又可能错过一次握手(尤其是网络不稳定的情况下),你可以自己设计几个值试验一下就可以了。
 
定义协议,或者是以数据大小来判断或者是以包的数量来判断有没有传输完毕,至于,丢包和网络阻塞问题,一是判断超时,二是判断握手次数,超出的话,就退出本次连接,同时传输的过程中一定要加校验,由校验来判断收到的包是否正确,不正确重发,超时或者超出次数终止本次通讯
 
to TYZhang:
现在我的带宽确定不下来!因为我有可能是ADSL上网,也可能是GSM移动上网、拨号上网。。。可ADSL 和拨号上网的速度差别就比较大了,如果是这样我的设计就要考虑多种情况,每次根据情况不同的情况进行不同的选择!
还有能不能在帮小弟个忙呀!
就是数据打包的问题,我现在的数据有可能是声音,图象和命令这几种情况,可是把这些东西变成数据包啊:(
我从来没有搞过网络方面的东西,这是第一次搞,找了好多天的资料,都没有门路,在这样下去真的要下岗了,麻烦兄弟拉小弟一把吧!最好能讲个例子,给点代码参考一下!
我的QQ:8741507 希望可以和你交个朋友!

kdsyrh谢谢你的帮忙!

参与的各位分数一定给你们送上
 
其实不管你打包的数据是什么,只要多于两种以上的类型使用同一通道传输,那么你就得定义数据结构头,比如:类型:(声音/命令/图像等)
数据总共大小:????
本次数据大小:????
本次数据位置:(第几个包,或数据偏移量)
实际数据位置:???
。。。。。。等信息;
或者你使用不同的端口(如果端口够用的话)传输数据,一个端口一种类型。
 
TYZhang:
能不能在麻烦你给我讲讲,如何将数据打包呀!
假如现在我把数据结构都定义好了
类型;
数据包大小;
本次数据大小;
。。。。。。

比如现在我有一个 图象文件,我如何将这个图象文件打包到我定义的数据包中呀!
能不能给点参考代码!小弟我愚笨,从来没做过这个。
 
打包是什么意思呢?
我用UDP来传输,我对图像文件的做法是:
把文件方到一个缓冲区中,把它分成几个小块,把这些小块发送出去,在接受方按照定义好的方式来重组,然后类型转换,就得到了我要的图片了。Image1.Picture.Bitmap.LoadFormStream(tm);
 
to kkkchenA:
你说的其实就是打包啊,你用UDP传输,可能会出现后发先至的现象,如果你不定义规则,只是将接受的数据按接受的顺序进行存放,可能会有问题,而且如果其中一片数据丢失,你的向服务器重要,如何要,要几次,这些都是要定的协议(规则),你把用于这些规则判断的必要信息与你要放送的原生数据捆绑在一起就是打包啊,可能这个概念定义的不准确,但是我们这都这么叫,也叫约定俗成。[:)]
 
后退
顶部