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

原创 2016年05月31日 16:25:15

在之前我们都是直接通过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

版权声明:本文为博主原创文章,转载请注明出处。

linux TCP 和 socket 参数设置

tcp_syn_retries :INTEGER 默认值是5 对于一个新建连接,内核要发送多少个 SYN 连接请求才决定放弃。不应该大于255,默认值是5,对应于180秒左右时间。(对于大负载而物理通...

TCP套接字选项

TCP套接字选项

网络编程Socket之TCP之connect详解

对TCP套接字调用connect会激发三次握手,如下: 客户端是主动打开连接的一端,会发送第一个SYN分节,然后等待确认,此时连接状态为SYN_SENT,当收到服务端的确认后...

TCP协议详解

TCP连接的建立正常情况下需要三次握手,断开正常情况下需要四次挥手;文章中介绍了TCP的特殊名词,各种标志位、状态解释及状态变迁图;重点介绍了TCP协议可靠性保障的原因,逻辑清晰的总结了TCP协议重传...

给定A, B两个整数,不使用除法和取模运算,求A/B的商和余数

给定A, B两个整数,不使用除法和取模运算,求A/B的商和余数。 1.   最基本的算法是,从小到大遍历: for (i = 2 to A -1)          if (i * B > A)...

配置SOIL库,实现纹理加载

SOIL 是一个用于向OpenGL中加载

SceneManager.LoadScene的使用方法

SceneManager.LoadScene的使用方法
  • XYK0318
  • XYK0318
  • 2016年03月17日 09:52
  • 18708

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

C语言dup和dup2函数

功能:复制文件描述符 头文件:#include 函数原型:int dup(int oldfd)           int dup2(int oldfd,int newfd) 功能详解:dup和d...

weui loading效果实现

界面 --> ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux下的TCP/IP编程----socket的可选项
举报原因:
原因补充:

(最多只允许输入30个字)