udp协议与可靠性传输问题(200分)

  • 主题发起人 主题发起人 jiangzy
  • 开始时间 开始时间
J

jiangzy

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟正在学习计算机网络,老师留下作业-----在udp协议中实现可靠性传输,小弟不会,
那位兄弟帮帮忙,最好能够提供源码。不胜感激!!!
愿出200分,还可加价。
 
[:)]作业让别人做可不好。
UDP的可靠性实现无非是增加确认与重传(因为是作业,我们可以考虑得简单一点,不考虑流量控制等因素),
你自己在UDP之上制定一个简单的协议就可以了。
 
参考:
http://www.nbcai.org/forums/cpbasedudp.htm
 
那你在UDP传送数据这前,先进行加密,有点类似QQ的做法。TCP是可靠的数据传输协议,而UDP
则是不面向连接,不可靠的数据传输协议,你可以对你传送的数据自己加上校验码、
丢包重发等方法。
 
了解TCP是如何进行可靠的传输的,我想你就会知道如何完成这个作业了。
 
Writer说的对,其实就是在改良UDP
在发的包中放一个确认码,然后端址收到后将这个确认码返回以证明收到,
如果在规定时间内该码无返回则视为丢包,需要重发.
 
有空,让我说一说。

假如有有数据A,现在将数据分成5份(1、2、3……),分别在这5份数据“标上序号”
,之后分别发到接收方,假如接收方只收到1、2、4、5的数据,证明数据3掉失,重发,
直到到完整为止。

其实这也是我最近看书学的,多多指教!
 
那要在UPD中添加自己的确认信息。
 
了解一下Tcp的传输协议,模仿他自己udp有连接传输
 
例如你可以加入BCC校验位,在你定义的传诵的数据最后增加一位BCC校验位。来增加可靠性。
unsigned char GetBCC(unsigned char * s, UINT nLong)
{ UINT i;
unsigned char bcc = 0;
for(i = 1; i < nLong; i++)
bcc = bcc ^ s;
return bcc;
}
这就是增加一位校验位的代码,你加在你的定义的协议后。
 
老大们是不是没上过网络课啊?
TCP的滑动窗都忘了?
UDP保证数据报的正确性都忘了?要什么校验阿!!!
 
可靠性指的是以发送的顺序接收到所有正确的数据,

udp接收到的数据包是不会错的,但是会丢包,
接收到的顺序也不一定是发送的顺序
如果丢包,则需要重发
 
可靠性传输主要你要处理以下几个方面:
1.超时重发机制,将超时未发送出去的数据进行重发操作。
2.应答机制,可以在你传输的包中自己定义一个发送次序的检验码,接收端按这个顺序码
依次接收,接收到数据后,发回一个应答信号来实现。
3.流量控制,udp不像tcp协议,TCP协议能调整发送端发送次序,保持与接收端步调一致。
但是UDP协议没有,当服务端来不及处理发过来的数据时,会将包丢弃,所以要在你的程序
里加入流量控制机制,使你的UDP传输更加可靠。
 
首先感谢大家的帮助!!!!
zw84611批评的对,
现在很后悔,上课的时候关顾着睡觉廖。
不过大家说的原理跟方法我也懂,只是第一次作这种东西,再加上对delphi网络方面的控件
也不清楚,具体做起来也不知道如何入手。那位兄台能不能给个小列子(附上代码)?
再次感谢大家。
 
http://www.playicq.com/dispdoc.php?t=27&id=434
 
接受答案了.
 
写了这么多,一分也不加。
哎,亏大了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
501
import
I
后退
顶部