LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1397|回复: 1

linux中setsockopt 调用不支持SO_SNDLOWAT?

[复制链接]
发表于 2005-8-19 13:44:46 | 显示全部楼层 |阅读模式
在rhas4 中,试图设置SNDLOWAT, 但发现只能读,不能设置。
代码如下:
        len = sizeof(val);
        if(getsockopt(fd,SOL_SOCKET, SO_SNDLOWAT, &val, &len) == -1){
                printf("getsockopt err.\n");
                exit(-1);
        }

        val = (32*1024);
        if(setsockopt(fd, SOL_SOCKET, SO_SNDLOWAT, &val, len) == -1){
                printf("setsockopt err:%d-%s\n",errno, strerror(errno));
                exit(-1);
        }

返回值:
读取的值为 1;
设置时错误,errno:92
而对SO_RCVLOWAT则可设置。

请问是否与socket 设置或版本有关,如何解决,谢谢。
发表于 2005-8-19 16:32:48 | 显示全部楼层
下面是2.6.12内核中的代码。

sock_getsockopt中的代码段:
                ...
                case SO_SNDLOWAT:
                        v.val=1;
                        break;
                ...

sock_setsockopt中的代码段:
                  ...
                /* We implement the SO_SNDLOWAT etc to
                   not be settable (1003.1g 5.3) */
                default:
                          ret = -ENOPROTOOPT;
                        break;
                ...
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表