关闭

Linux下的TCP/IP编程----socket的可选项

标签: socketlinux
974人阅读 评论(4) 收藏 举报
分类:

在之前我们都是直接通过socket()函数创建一个socket文件描述符直接使用,其实这只是系统为我们提供的一个默认的socket描述符,我们可以根据自己的工程的需求来对socket进行相应的配置,以提高程序的效率。

以下就是一些常见的可选项参数:

协议层 选项名 读取 设置 作用
SOL_SOCKET SO_SENDBUF O O 设置输出缓冲的大小
SO_RCVBUF O O 设置输入缓冲去大小
SO_REUSEADDR O O 端口释放后立即重用
SO_KEEPALIVE O O 开启心跳检测
SO_BROADCAST O O 开启广播功能
SO_DONTROURT O O 发送给直连网络,和选用的协议有关
SO_OOBINLINE O O 直接发送单字节数据
SO_ERROR O X 调试和异常信息
SO_TYPR O X 套接字类型

协议层 选项名 读取 设置 作用
IPPROTO_IP IP_TOS O O 修改IP包的TOS字段.
IP_TTL O O 设置主机发送数据包的生存时间
IP_MULTICAST_TTL O O 设置多播组数据的TTL值
IP_MULTICAST_LOOP O O 设置多播是否回送
IP_MULTICAST_IF O O 设置默认接口

协议层 选项名 读取 设置 作用
IPPROTO_TCP TCP_KEEPALIVE O O 设置主动探测socket是否可用的方式
TCP_NODELAY O O 设置Nagle算法
TCP_MAXSEG O O 设置发送给对端的最大数据量

设置可选项的方法:

int getsockopt(int sock,int level,int optname,void *optval,socklen_t *optlen):获取socket当前的状态

  • sock(socket描述符):要查看的socket描述符

  • level(协议层):要查看的可选项的协议层

  • optname(可选项名字):要查看的可选项的名字

  • optval(缓冲地址):可选项值的缓冲地址

  • optlen(地址长度):保存返回的可选项值的字节数

成功时返回0,失败时返回-1

int setsockopt(int sock,int level,int optname,const void *optval,socklen_t *optlen):设置socket的状态

  • sock(socket描述符):要设置的socket描述符

  • level(协议层):要设置的可选项的协议层

  • optname(可选项名字):要设置的可选项的名字

  • optval(缓冲地址):要设置的可选项值的缓冲地址

  • optlen(地址长度):保存要设置的可选项值的字节数

成功时返回0,失败时返回-1

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:66008次
    • 积分:1618
    • 等级:
    • 排名:千里之外
    • 原创:91篇
    • 转载:6篇
    • 译文:0篇
    • 评论:15条
    博客专栏