套接字选项

套接字选项

套接字选项是我们网络编程中很重要的一点,有很多方式去设置或者查看一个socket的选项

  1. getsocketopt / setsocketopt
  2. fcntl
  3. ioctl

ip套接字选项图

套接字选项

tcp套接字选项

套接字选项

特殊套接字选项

有些套接字选项也不是所有的可以直接设置或者查看的,有些选项是需要相应的时机我们才能设置。比如 tcp 的已连接节点(必须得成功完成三次握手的socket)的一些选项

  • SO_DEBUG
  • SO_DONTROUTE
  • SO_SNDBUF
  • SO_RECVBUF
  • SO_SNDLOWAT (udp/tcp默认为2048)
  • SO_RECVLOWAT(udp/tcp默认为1)
  • TCP_MAXSEG
  • TCP_NODELAY(不开启nagle算法,nagle算法为了避免拥塞,让小块数据一起发送,而不一个一个发送)
  • SO_KEEPALIVE(设置后可定期的以tcp的角度去查看连接是否正常)
  • SO_LINGER (描述关闭套接字时候的一些设置)
  • SO_OOBINLINE

所以为了确保我们通过服务器成功接受的套接字设置了这些选项,我们必须要给listensocket设置这些选项,那么accept的套接字是会继承这些选项的。

Tcp选项

  其选项头文件在 netinet/tcp.h 中