- TCP_NODELAY(作用:启动TCP_NODELAY,就意味着禁用了Nagle算法,允许小包的发送。)
setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, (char*)&nodelay, sizeof(nodelay)); - SO_REUSEADDR(作用:允许一个server程序listen监听并bind到一个端口,即使这个端口已经被一个正在运行的连接使用了.)
setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char*)&reuse, sizeof(reuse)); - SO_SNDBUF(作用:设置发送缓冲区的大小)
setsockopt(m_socket, SOL_SOCKET, SO_SNDBUF, &send_size, 4);
getsockopt(m_socket, SOL_SOCKET, SO_SNDBUF, &size, &len); - SO_RCVBUF(作用:设置接收缓冲区的大小)
setsockopt(m_socket, SOL_SOCKET, SO_RCVBUF, &recv_size, 4);
getsockopt(m_socket, SOL_SOCKET, SO_RCVBUF, &size, &len); - O_NONBLOCK(作用:设置非阻塞)
fcntl(fd, F_SETFL, O_NONBLOCK | fcntl(fd, F_GETFL)); - SO_LINGER:(作用:优雅关闭,延时关闭)
在默认情况下,当调用close关闭socke的使用,close会立即返回,但是,如果send buffer中还有数据,系统会试着先把send buffer中的数据发送出去,然后close才返回.
setsockopt(fd, SOL_SOCKET, SO_LINGER, (char*)&reuse, sizeof(reuse));
TCP/IP开发中的设置字段解析
最新推荐文章于 2022-03-01 19:13:09 发布