今天在看怎么禁用TCP中的negle算法,学习到了setsockopt函数。下面分享一下setsockopt函数的调用和参数详解:
int Err=setsockopt(int sockfd,int level,int optname,const void* optval,socklen_t optlen);
第一个参数就是套接字名sockfd;
第二个参数是使用的协议,有以下三种:
SOL_SOCKET 通用套接字;
IPPROTO_IP IP协议;
IPPROTO_TCP TCP协议;
第三个参数是协议里的选项;
通用套接字里面的有好多好多,我大致的看了一遍,都没怎么用到过,以后用到了我在改博客更新。
IP协议选项有下面几个:
IP_HDRINCL 在数据报中包含IP首部
IP_OPTIONS IP首部选项
IP_TOS 服务类型
IP_TTL 生存时间
TCP协议两个:
TCP_MAXSEG TCP最大数据段的大小;
TCP_NODELAY TCP的不使用negle算法;
第四个参数 返回选项值的缓冲;
第五个参数 选项值的字节大小;
现在写一个,禁用negle算法的例子:
const char chOpt=1;
int Err;
Err=setsockopt(sockfd,IPPRO_TCP,TCP_NODELAY,&chOpt,sizeof(char));
if(Err==-1)
perror("setsockopt error!");
+