SOCKET : TCP和UDP区别的体现?? TCP的验证功能,是不需要程序员自己写,TCP协议自带验证,UDP的验证应采取上面2那种方式,不需要等待,最后接受方发个接受完全的消息就结束了,UDP节省了发送成功时候的验证,所以比较快 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼主,我来试着回答一下你的问题:(1)作为一个传输层的协议,TCP/IP 协议在系统中是封装好了的,不需要自己来实现它的功能。对于TCP和UDP的使用,我们尽管使用系统留给我们的接口即可,所以对于TCP来说,它提供可靠的连接,有自动重传的功能,我们不必自己来写。(2)UDP协议虽然提供不可靠的连接,但是它的效率是TCP比不了的,所以在那些对可靠性要求不是很高的应用来说,UDP是个好的选择,比如视频和音频的应用可以在它的基础之上写一些应用层的协议。至于重传的怎么写,你可以学习一下RTP协议,我相信对你会有帮助的。 TCP是可靠传输,你的代码通常不用管了但是IPV6下,建议你在自己的协议层加个校验,因为IPV6下,IP层的数据校验被取消了,只剩下TCP校验UDP做可靠传输,就需要执行类似TCP的确认机制,但是什么时候重新传递确实是个问题,因为有些网络上延迟很厉害,有些确很低,我自己实现了一个TUDP协议,确认重新传递的时间间隔是动态调整的,默认是 80 MS-》根据第一个反馈包的时间差,加上容余量20左右,重发,如果第一次确认时间很长,那么下次就自动调整重发时间往长的方向,最多不超过3秒 ,因为我测试网络延迟一般高的普遍在1XXX-2XXX之间,超过3的比较少这个完全靠经验数据和流程的动态判断,没有规定的重传时间此外,由于UDP被改造成了可靠传输,而我们自己的引擎是无法运行在核心层下,因此,效率不如TCP 刚 又想到 一个问题:UDP 一个一个数据包发送 ,这样会不会 后发的数据包先到?那接收端是不是接收的顺序也乱了?要程序员来做相关排序操作吗?像 网络视频 的话,会不会后一秒的画面比前一秒的画面先播放出来?传 文件 的话,文件就会打不开了? UDP : 如果 A的反馈包 超时了,这时 你重发了A包,A包发完后,那个A的反馈包又收到了,那A包不是发了2次?接收端会不会有问题啊? TCP是不需要程序员来写机制的人家已经封装好了UDP确认机制要第一种,要不然就乱序了UDP可能出现乱序问题的 问题一:TCP一般不需要自己验证。问题二:UDP的验证方法有很多,根据实际需要来决定。简单提几种方式:1、不做验证。对于不重要的数据传输,可以忽略丢包以及无序到达,例如视频、音频的即时播放。2、对每次发送的数据进行编号,接收方每次收到数据后回发编号,并自己丢弃重复收到的数据,发送方如果在一定时间内没有收到回应则自动重发。这种方式传输速度较低,适用于简单的数据传输。3、对每次发送的数据进行编号,由接收方来检查丢包情况,在适当的时候要求发送方重发前一段时间内丢失的数据。这种方式适用于大规模数据传输。 你自己的协议机制可以保证这个不会出错只确认一次,加个序列号就可以了可以参考TCP实现 协议的实现机制上,tcp会有对应的机制保证传输的正确性,但是udp只是发送,没有重传等机制 问题一:TCP一般不需要自己验证(协议底层保证了)。 问题二:UDP的验证方法有很多,根据实际需要来决定。简单提几种方式: 1、不做验证。对于不重要的数据传输,可以忽略丢包以及无序到达,例如视频、音频的即时播放。 2、对每次发送的数据进行编号,接收方每次收到数据后回发编号,并自己丢弃重复收到的数据,发送方如果在一定时间内没有收到回应则自动重发。这种方式传输速度较低,适用于简单的数据传输。 3、对每次发送的数据进行编号,由接收方来检查丢包情况,在适当的时候要求发送方重发前一段时间内丢失的数据。这种方式适用于大规模数据传输。 socket 和tcp udp是一个网络层的吗?tcp连接用Socket 传输文件?? 超难问题,-delete CFrameWnd 何种情况下成功后窗口还存在 修改注册表键值:HKEY_USERS\S-1-5-21-XXXX\Software\... 的问题! smtp发送邮件,DATA命令发送后,出现SOCKET_ERROR,大虾们帮帮我这个小虾米 兄弟们,有在天津的吗? 关于在IE里面抓词的问题 请问如何在执行辅助线程的过程中获得主线程的指针? ******成手级的问题,先看以下程序(狂送分)****** Debug Assertion Failed! 奇怪的Connect 如何在mfc界面中实现tcp功能 vc中,框架类向视图类发送消息问题 mfc的工具栏图标替换
(1)作为一个传输层的协议,TCP/IP 协议在系统中是封装好了的,不需要自己来实现它的功能。对于TCP和UDP的使用,我们尽管使用系统留给我们的接口即可,所以对于TCP来说,它提供可靠的连接,有自动重传的功能,我们不必自己来写。
(2)UDP协议虽然提供不可靠的连接,但是它的效率是TCP比不了的,所以在那些对可靠性要求不是很高的应用来说,UDP是个好的选择,比如视频和音频的应用可以在它的基础之上写一些应用层的协议。至于重传的怎么写,你可以学习一下RTP协议,我相信对你会有帮助的。
但是IPV6下,建议你在自己的协议层加个校验,因为IPV6下,IP层的数据校验被取消了,只剩下TCP校验UDP做可靠传输,就需要执行类似TCP的确认机制,但是什么时候重新传递确实是个问题,因为有些网络上延迟很厉害,有些确很低,我自己实现了一个TUDP协议,确认重新传递的时间间隔是动态调整的,默认是 80 MS-》根据第一个反馈包的时间差,加上容余量20左右,重发,如果第一次确认时间很长,那么下次就自动调整重发时间往长的方向,最多不超过3秒 ,因为我测试网络延迟一般高的普遍在1XXX-2XXX之间,超过3的比较少
这个完全靠经验数据和流程的动态判断,没有规定的重传时间此外,由于UDP被改造成了可靠传输,而我们自己的引擎是无法运行在核心层下,因此,效率不如TCP
UDP : 如果 A的反馈包 超时了,这时 你重发了A包,A包发完后,那个A的反馈包又收到了,那A包不是发了2次?接收端会不会有问题啊?
人家已经封装好了
UDP确认机制要第一种,要不然就乱序了
UDP可能出现乱序问题的
问题二:UDP的验证方法有很多,根据实际需要来决定。简单提几种方式:
1、不做验证。对于不重要的数据传输,可以忽略丢包以及无序到达,例如视频、音频的即时播放。
2、对每次发送的数据进行编号,接收方每次收到数据后回发编号,并自己丢弃重复收到的数据,发送方如果在一定时间内没有收到回应则自动重发。这种方式传输速度较低,适用于简单的数据传输。
3、对每次发送的数据进行编号,由接收方来检查丢包情况,在适当的时候要求发送方重发前一段时间内丢失的数据。这种方式适用于大规模数据传输。
你自己的协议机制可以保证这个不会出错
只确认一次,加个序列号就可以了
可以参考TCP实现
问题二:UDP的验证方法有很多,根据实际需要来决定。简单提几种方式:
1、不做验证。对于不重要的数据传输,可以忽略丢包以及无序到达,例如视频、音频的即时播放。
2、对每次发送的数据进行编号,接收方每次收到数据后回发编号,并自己丢弃重复收到的数据,发送方如果在一定时间内没有收到回应则自动重发。这种方式传输速度较低,适用于简单的数据传输。
3、对每次发送的数据进行编号,由接收方来检查丢包情况,在适当的时候要求发送方重发前一段时间内丢失的数据。这种方式适用于大规模数据传输。