当前位置: 技术问答>linux和unix
setsockopt出错
来源: 互联网 发布时间:2015-04-21
本文导语: 请教各位: 我写了下面一段代码,但是运行后setsockopt出错了Protocol not available,这是为什么?并且getsockopt后得到的optval的值为4,我想应该是4K,是不是SO_SNDLOWAT返回的数值以K为单位? optval = 1; optlen = 4; if(...
请教各位:
我写了下面一段代码,但是运行后setsockopt出错了Protocol not available,这是为什么?并且getsockopt后得到的optval的值为4,我想应该是4K,是不是SO_SNDLOWAT返回的数值以K为单位?
optval = 1;
optlen = 4;
if(setsockopt(sockfd,SOL_SOCKET,SO_SNDLOWAT,&optval,sizeof(optval)) == -1)
{
perror("setsockoptn");
}
if(getsockopt(sockfd,SOL_SOCKET,SO_SNDLOWAT,&optval,&optlen) == -1)
{
perror("getsockoptn");
}
我写了下面一段代码,但是运行后setsockopt出错了Protocol not available,这是为什么?并且getsockopt后得到的optval的值为4,我想应该是4K,是不是SO_SNDLOWAT返回的数值以K为单位?
optval = 1;
optlen = 4;
if(setsockopt(sockfd,SOL_SOCKET,SO_SNDLOWAT,&optval,sizeof(optval)) == -1)
{
perror("setsockoptn");
}
if(getsockopt(sockfd,SOL_SOCKET,SO_SNDLOWAT,&optval,&optlen) == -1)
{
perror("getsockoptn");
}
|
不支持修改:
SO_RCVLOWAT and SO_SNDLOWAT
Specify the minimum number of bytes in the buffer until the socket layer will pass the data to the protocol (SO_SNDLOWAT) or the user on receiving (SO_RCVLOWAT). These two values are not changeable in Linux and their argument size is always fixed to 1 byte. getsockopt is able to read them; setsockopt will always return ENOPROTOOPT.
SO_RCVLOWAT and SO_SNDLOWAT
Specify the minimum number of bytes in the buffer until the socket layer will pass the data to the protocol (SO_SNDLOWAT) or the user on receiving (SO_RCVLOWAT). These two values are not changeable in Linux and their argument size is always fixed to 1 byte. getsockopt is able to read them; setsockopt will always return ENOPROTOOPT.
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。