UDP如何重发丢失的数据包?
让我来告诉你答案!udp本身没有重发机制。需要用户自己在数据包中包含检索标记。接收方,检查到不合格的包,或是没有收到某一包,向发送方发送要求重发。
c#在用udp传送数据时,丢包后怎么才能重传丢?
UDP自身就是传输非安全性.你要想保证不丢失以及顺序正确是不可能的.
推荐您考虑从包头的标识做起
例如封装MODEL
或者在bYTE数组前加入当前第几分组第几个.等等标识即可
socket编程udp丢包怎么重发?
当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。 UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。 区别:
1.基于连接与无连接
2.对系统资源的要求(TCP较多,UDP少)
3.UDP程序结构较简单
4.流模式与数据报模式 TCP保证数据正确性,UDP可能丢包 TCP保证数据顺序,UDP不保证 具体编程时的区别 socket()的参数不同 UDP Server不需要调用listen和accept UDP收发数据用sendto/recvfrom函数 TCP:地址信息在connect/accept时确定UDP:在sendto/recvfrom函数中每次均 需指定地址信息
TCP和UDP都有重传机制吗?
TCP会重传,会自动确认信息是否发送完成。
UDP不会,需要自己实现相应的机制。
为什么udp协议适用于实时通信,多媒体通信?
UDP,实时性好,不存在重传,信号不好就丢包,所以在网络不好的情况下,会出现丢包的风险tcp,有重传机制,包不宜丢,但是实时性不够好,网络不好的情况下,可能一包数据一直重传,导致对端收不到数据