大家好,今天小编关注到一个比较有意思的话题,就是关于udp报文 多久算超时的问题,于是小编就整理了2个相关介绍的解答,让我们一起看看吧。
socketsend总是超时什么原因?
linux和windows下用setsockopt设置SO_SNDTIMEO,SO_RCVTIMEO的参数的一点区别UDP的socket在某些情况:
如对方关闭时,本地可能sendto不出去数据,然后recvfrom就会被阻塞,这时就需要设置这两个参数的值提高程序质量。linux:structtimevaltimeout={3,0}
;//3sintret=setsockopt(sock_fd,SOL_SOCKET,SO_SNDTIMEO,(constchar*)&timeout,sizeof(timeout))
;intret=setsockopt(sock_fd,SOL_SOCKET,SO_RCVTIMEO,(constchar*)&timeout,sizeof(timeout))
;如果ret==0则为成功,-1为失败,这时可以查看errno来判断失败原因intrecvd=recv(sock_fd,buf,***,0)
;if(recvd==-1&&errno==EAGAIN){printf("timeout\n");
}windows:inttimeout=3000;//3sintret=setsockopt(sock_fd,SOL_SOCKET,SO_SNDTIMEO,&timeout,sizeof(timeout))
;intret=setsockopt(sock_fd,SOL_SOCKET,SO_RCVTIMEO,&timeout,sizeof(timeout));而solaris,则不支持。
udp是可靠的传输协议吗?
UDP协议是不可靠协议。UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议。
UDP协议
不保证消息交付:不确认,不重传,无超时
不保证交付顺序:不设置包序号,不重排,不会发生队首阻塞
不跟踪连接状态: 不必建立连接或重启状态机
不需要拥塞控制: 不内置客户端或网络反馈机制
因此我们说UDP协议是不可靠协议,
到此,以上就是小编对于udp报文超时可以重传的问题就介绍到这了,希望介绍的2点解答对大家有用。