Linux C/C++后台开发

Talk is cheap. Show me the code!

socket套接字选项和模式

设置非阻塞

windows的做法:
u_long nonblocking = 1;
ioctlsocket(fd, FIONBIO, &nonblocking);

linux的做法:
方法一
int flags;
flags = fcntl(fd, F_GETFL, NULL);
fcntl(fd, F_SETFL, flags | O_NONBLOCK);
方法二
int flag = 1;
ioctl(fd, FIONBIO, &flag);
推荐使用方法一,因为先用flags保存了当前的属性,再附加了非阻塞新属性,更安全

设置SO_KEEPALIVE

int flags = 1;
setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, (void*)&flags, sizeof(flags));

设置SO_REUSEADDR(这个注意要在bind之前设置)

int flags = 1;
setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (void*) &flags,sizeof(flags));

设置FD_CLOEXEC(只针对linux的fork)

int flags;
flags = fcntl(fd, F_GETFD, NULL);
fcntl(fd, F_SETFD, flags | FD_CLOEXEC);
阅读更多
版权声明:本文为博主原创文章,如需转载请标明出处链接!否则追究法律责任! https://blog.csdn.net/peng314899581/article/details/53046523
个人分类: 网络编程
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

socket套接字选项和模式

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭