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网络编程四:socket选项: SO_REUSEADDR, SO_RCVBUF, SO_SNDBUF

最近在看《linux高性能服务器编程》,在此做个日记,以激励自己,同时分享于有需要的朋友。 1. 读取和设置socket文件描述符属性: #include int getsocko...
  • jasonliuvip
  • jasonliuvip
  • 2014年03月30日 16:53
  • 6125

Linux网络编程socket选项之SO_LINGER

Linux网络编程中,socket的选项很多.其中几个比较重要的选项有:SO_LINGER(仅仅适用于TCP,SCTP), SO_REUSEADDR.   SO_LINGER 在默认情况下...
  • luckxu
  • luckxu
  • 2014年01月18日 20:57
  • 652

TCP段头详解

TCP数据段头的标志位 TCP共有六位标志位,分别是:URG、ACK、PSH、RST、SYN和FIN TCP标志位 URG:     此标志表示TCP包的紧急指针域(后面马上就要说到)有效,用来...
  • baixue6269
  • baixue6269
  • 2011年12月15日 16:18
  • 1895

TCP套接字选项

TCP套接字选项
  • LZQ_daily
  • LZQ_daily
  • 2016年03月21日 08:52
  • 688

TCP协议详解

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

网络编程Socket之TCP之connect详解

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

MFC edit控件实现自动换行

必须设置Vertical Scrollbar = TRUE 必须设置MultiLine = TRUE 必须设置Horizontal Scrollbar = FALSE 必须设置Auto HScr...
  • a200638012
  • a200638012
  • 2016年07月08日 17:22
  • 4794

设置MFC Edit control可以换行显示

MFC Edit control可以换行显示 1.设置edit control 属性Multiline为true 2.写入数据时,想换行的时候写入"\r\n"即可,CString str.Re...
  • a780902723
  • a780902723
  • 2014年12月09日 16:52
  • 2469

MFC中EDIT控件实现换行

一、通过回车换行: 这里要有两个设置 .将控件的属性设置为Mutilines->true; .将控件的另一个属性设置为Want return->true. 水平和垂直滚动条设置...
  • dearwind153
  • dearwind153
  • 2015年12月09日 21:13
  • 3892

Linux的SOCKET编程详解

Linux的SOCKET编程详解 1. 网络中进程之间如何通信 进 程通信的概念最初来源于单机系统。由于每个进程都在自己的地址范围内运行,为保证两个相互通信的进 程之间既互不干扰又...
  • hguisu
  • hguisu
  • 2012年04月10日 17:44
  • 250679
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux下的TCP/IP编程----socket的可选项
举报原因:
原因补充:

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