J jiangzy Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-01 #1 小弟正在学习计算机网络,老师留下作业-----在udp协议中实现可靠性传输,小弟不会, 那位兄弟帮帮忙,最好能够提供源码。不胜感激!!! 愿出200分,还可加价。
Z zw84611 Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-01 #2 []作业让别人做可不好。 UDP的可靠性实现无非是增加确认与重传(因为是作业,我们可以考虑得简单一点,不考虑流量控制等因素), 你自己在UDP之上制定一个简单的协议就可以了。
Z zw84611 Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-01 #3 参考: http://www.nbcai.org/forums/cpbasedudp.htm
Y yeath Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-01 #4 那你在UDP传送数据这前,先进行加密,有点类似QQ的做法。TCP是可靠的数据传输协议,而UDP 则是不面向连接,不可靠的数据传输协议,你可以对你传送的数据自己加上校验码、 丢包重发等方法。
W Writer Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-01 #5 了解TCP是如何进行可靠的传输的,我想你就会知道如何完成这个作业了。
O only you Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-01 #6 Writer说的对,其实就是在改良UDP 在发的包中放一个确认码,然后端址收到后将这个确认码返回以证明收到, 如果在规定时间内该码无返回则视为丢包,需要重发.
W Writer Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-01 #7 有空,让我说一说。 假如有有数据A,现在将数据分成5份(1、2、3……),分别在这5份数据“标上序号” ,之后分别发到接收方,假如接收方只收到1、2、4、5的数据,证明数据3掉失,重发, 直到到完整为止。 其实这也是我最近看书学的,多多指教!
有空,让我说一说。 假如有有数据A,现在将数据分成5份(1、2、3……),分别在这5份数据“标上序号” ,之后分别发到接收方,假如接收方只收到1、2、4、5的数据,证明数据3掉失,重发, 直到到完整为止。 其实这也是我最近看书学的,多多指教!
C cjsam Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-01 #10 例如你可以加入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; } 这就是增加一位校验位的代码,你加在你的定义的协议后。
例如你可以加入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; } 这就是增加一位校验位的代码,你加在你的定义的协议后。
妙 妙兔无花 Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-01 #11 老大们是不是没上过网络课啊? TCP的滑动窗都忘了? UDP保证数据报的正确性都忘了?要什么校验阿!!!
L LiChaoHui Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-01 #12 可靠性指的是以发送的顺序接收到所有正确的数据, udp接收到的数据包是不会错的,但是会丢包, 接收到的顺序也不一定是发送的顺序 如果丢包,则需要重发
Y yeath Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-02 #13 可靠性传输主要你要处理以下几个方面: 1.超时重发机制,将超时未发送出去的数据进行重发操作。 2.应答机制,可以在你传输的包中自己定义一个发送次序的检验码,接收端按这个顺序码 依次接收,接收到数据后,发回一个应答信号来实现。 3.流量控制,udp不像tcp协议,TCP协议能调整发送端发送次序,保持与接收端步调一致。 但是UDP协议没有,当服务端来不及处理发过来的数据时,会将包丢弃,所以要在你的程序 里加入流量控制机制,使你的UDP传输更加可靠。
可靠性传输主要你要处理以下几个方面: 1.超时重发机制,将超时未发送出去的数据进行重发操作。 2.应答机制,可以在你传输的包中自己定义一个发送次序的检验码,接收端按这个顺序码 依次接收,接收到数据后,发回一个应答信号来实现。 3.流量控制,udp不像tcp协议,TCP协议能调整发送端发送次序,保持与接收端步调一致。 但是UDP协议没有,当服务端来不及处理发过来的数据时,会将包丢弃,所以要在你的程序 里加入流量控制机制,使你的UDP传输更加可靠。
J jiangzy Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-02 #14 首先感谢大家的帮助!!!! zw84611批评的对, 现在很后悔,上课的时候关顾着睡觉廖。 不过大家说的原理跟方法我也懂,只是第一次作这种东西,再加上对delphi网络方面的控件 也不清楚,具体做起来也不知道如何入手。那位兄台能不能给个小列子(附上代码)? 再次感谢大家。
首先感谢大家的帮助!!!! zw84611批评的对, 现在很后悔,上课的时候关顾着睡觉廖。 不过大家说的原理跟方法我也懂,只是第一次作这种东西,再加上对delphi网络方面的控件 也不清楚,具体做起来也不知道如何入手。那位兄台能不能给个小列子(附上代码)? 再次感谢大家。
Z zw84611 Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-02 #15 http://www.playicq.com/dispdoc.php?t=27&id=434