C/C++网络编程在windows和linux中将socket设置为阻塞和非阻塞
来源:互联网 发布:火炬之光2 mac 编辑:程序博客网 时间:2024/06/05 06:35
C/C++网络编程在windows和linux中将socket设置为阻塞和非阻塞
在 socket编程中,对于socket的读写默认都是阻塞的,但有的情况我们需要将其设置为非阻塞,比如做多路复用,或者通过select实现连接超时等功能,将socket设置为非阻塞,在windows和linux中的接口有所不同,在windows中使用ioctlsocket函数,在linux中使用 fcntl函数,下面我们做一个跨平台设置阻塞的函数SetBlock。
bool SetBlock(int sock,bool isblock){int re = 0;//通过宏区分windows和linux,如果是windows64位程序判断 _WIN64宏#ifdef WIN32unsigned long ul = 0;if(!isblock) ul = 1;re = ioctlsocket(sock, FIONBIO, (unsigned long*)&ul);#else//先取到现有描述符属性,保证本次更改不变动原有属性int flags = fcntl(sock, F_GETFL, 0);if (flags < 0) {return false;}if(isblock){flags = flags & ~O_NONBLOCK;}else{flags = flags | O_NONBLOCK;}re = fcntl(sock, F_SETFL, flags);#endifif (re != 0) return false;return true;}
更多内容可以到网上搜索“夏曹俊”获取我的课程
也可以看我在csdn学院的视频课程 夏曹俊
http://edu.csdn.net/course/detail/4358
1 0
- C/C++网络编程在windows和linux中将socket设置为阻塞和非阻塞
- socket设置为非阻塞方式(windows和linux)
- 网络编程Socket的阻塞和非阻塞IO
- windows的阻塞和非阻塞Socket编程
- linux socket的阻塞和非阻塞设置方法
- socket阻塞 和 非阻塞设置
- socket 阻塞 和 非阻塞设置
- Linux socket编程中阻塞和非阻塞
- 【转】linux网络编程中阻塞和非阻塞socket的区别
- linux网络编程中阻塞和非阻塞socket的区别
- linux网络编程中阻塞和非阻塞socket的区别
- linux网络编程中阻塞和非阻塞socket的区别
- linux网络编程中阻塞和非阻塞socket的区别
- linux网络编程中阻塞和非阻塞socket的区别
- linux网络编程中阻塞和非阻塞socket的区别
- linux网络编程中阻塞和非阻塞socket的区别
- linux网络编程:设置非阻塞socket收发数据
- linux网络编程:设置非阻塞socket收发数据
- 第3周测试题解析
- hjr教程-JSP(七):Spring+Mybatis
- #pragma once 与 #ifndef含义
- ReactNative学习笔记--下拉选择菜单的简单封装
- vue-resource拦截器设置头信息
- C/C++网络编程在windows和linux中将socket设置为阻塞和非阻塞
- delphi 判断目录是否有写入权限
- [CSS] 详细解释 @media 属性与 (max-width:) and (min-width) 之间的关系及用法
- opengl学习
- include和require等的区别
- 如何快速转载CSDN中的博客
- VS2013设置护眼背景颜色
- freemarker 生成word
- OC转Swift之基础篇(二)--函数