关闭

socket套接字选项和模式

标签: socketioctlsockefcntlsetsockopt
564人阅读 评论(0) 收藏 举报
分类:

设置非阻塞

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);
0
3

猜你在找
深度学习基础与TensorFlow实践
【在线峰会】前端开发重点难点技术剖析与创新实践
【在线峰会】一天掌握物联网全栈开发之道
【在线峰会】如何高质高效的进行Android技术开发
机器学习40天精英计划
Python数据挖掘与分析速成班
微信小程序开发实战
JFinal极速开发企业实战
备战2017软考 系统集成项目管理工程师 学习套餐
Python大型网络爬虫项目开发实战(全套)
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:15916次
    • 积分:531
    • 等级:
    • 排名:千里之外
    • 原创:37篇
    • 转载:0篇
    • 译文:0篇
    • 评论:21条
    联系方式

    公司:深信服科技股份有限公司


    所在地:中国-广东省-深圳市


    QQ交流群:165650716


    文章分类
    最新评论