-- 作者:wangxinxin
-- 发布时间:2010-12-10 14:11:31
-- 讨论 Setsockopt选项_开发语言_C/C++开发_编程指南
SO_RCVBUF 接收缓冲区大小 int 设置接收缓冲区 保留大小 与 SO_MAX_MSG_SIZE 或TCP滑动窗口无关 如果一般发送 包很大很频繁 那么解决这个选项
SO_SNDBUF 发送缓冲区大小 int 设置发送缓冲区 保留大小 与 SO_MAX_MSG_SIZE 或TCP滑动窗口无关 如果一般发送 包很大很频繁 那么解决这个选项 每个套接口都 一个发送缓冲区和一个接收缓冲区 接收缓冲区被TCP和UDP用来将接收到 数据一直保存到由解决进程来读 TCP:TCP通告另一端 窗口大小 TCP套接口接收缓冲区不可能溢出 因为对方不允许发出超过所通告窗口大小 数据 这就 TCP 流量控制 如果对方无视窗口大小而发出了超过宙口大小 数据 则接 收方TCP将丢弃它 UDP:当接收到 数据报价装不进套接口接收缓冲区时 此数据报价就被丢弃 UDP 没 流量控制 ;快 发送者可以很容易地就淹没慢 接收者 导致接收方 UDP丢弃数据报价
SO_RCVLOWAT 接收缓冲区下限 int SO_SNDLOWAT 发送缓冲区下限 int 每个套接口都 一个接收低潮限度和一个发送低潮限度 它们 函数selectt解决 接收低潮限度 让select返回“可读”而 套接口接收缓冲区中必须 数据总量 ——对于一个TCP或UDP套接口 此值缺省为1 发送低潮限度 让select返回“可写” 而 套接口发送缓冲区中必须 可用空间 对于TCP套接口 此值常缺省为2048 对于UDP解决低潮限度 由于其发送缓冲区中可用空间 字节数 从不变化 只要 UDP套接口发送缓冲区大小大于套接口 低潮限度 这样 UDP套接口就总 可写 UDP没 发送缓冲区 只 发送缓冲区 大小
SO_RCVTIMEO 接收超时 struct timeval SO_SNDTIMEO 发送超时 struct timeval SO_REUSERADDR 允许重用本地地址和端口 int 充许绑定已被解决 地址(或端口号) 可以办法bind man
SO_EXCLUSIVEADDRUSE 独占模式解决端口 就 不充许和其它源代码解决SO_REUSEADDR共享 解决某一端口 确定多重绑定解决谁 时候 根据一条原则 谁 指定最明确则将包递交给谁 而且没 权限之分 也就 说低级权限 用户 可以重绑定 高级权限如服务启动 端口上 这 非常重大 一个安全隐患 如果不想让自己源代码被监听 那么解决这个选项
SO_TYPE 获得套接字类型 int SO_BS数码相机OMPAT 与BSD系统兼容 int
========================================================================== IPPROTO_IP -------------------------------------------------------------------------- IP_HDRINCL 数据包中包含IP首部 int 这个选项常用于黑客技术中 隐藏自己 IP地址
IP_OPTINOS IP首部选项 int IP_TOS 服务类型 IP_TTL 生存时间 int
以下IPV4选项用于组播 IPv4 选项 数据类型 描 述 IP_ADD_MEMBERSHIP struct ip_mreq 加入到组播组中 IP_ROP_MEMBERSHIP struct ip_mreq 从组播组中退出 IP_MULTICAST_IF struct ip_mreq 指定提交组播报价文 接口 IP_MULTICAST_TTL u_char 指定提交组播报价文 TTL IP_MULTICAST_LOOP u_char 使组播报价文环路 效或无效 头文件中定义了ip_mreq结构: [code:1:63724de67f] struct ip_mreq { struct in_addr imr_multiaddr; /* IP multicast address of group */ struct in_addr imr_interface; /* local IP address of interface */ }; [/code:1:63724de67f] 若进程要加入到一个组播组中 用soket setsockopt()函数发送该选项 该选项类型 ip_mreq结构 它 第一个字段imr_multiaddr指定了组播组 地址 第二个字段imr_interface指定了接口 IPv4地址 IP_DROP_MEMBERSHIP 该选项用来从某个组播组中退出 数据结构ip_mreq 解决办法与上面相同 IP_MULTICAST_IF 该选项可以修改网络接口 结构ip_mreq中定义新 接口 IP_MULTICAST_TTL 设置组播报价文 数据包 TTL(生存时间) 默认值 1 表示数据包只能 本地 子网中传送 IP_MULTICAST_LOOP 组播组中 成员自己也会收到它向本组发送 报价文 这个选项用于抉择 否激活这种状态
|