套接字设置为(非)阻塞模式

当socket 进行TCP 连接的时候(也就是调用connect 时),一旦网络不通,或者是ip 地址无效,就可能使整个线程阻塞。一般为30 秒(我测的是20 秒)。如果设置为非阻塞模式,能很好的解决这个问题,我们可以这样来设置非阻塞模式:调用 ioctl 函数:
unsigned long flag=1;
if (ioctl(sock,FIONBIO,&flag)!=0)
{
closesocket(sock);
return false;
}
以下是对ioctlsocket 函数的相关解释:

int PASCAL FAR ioctlsocket( SOCKET s, long cmd, u_long FAR* argp);
s :一个标识套接口的描述字。
cmd :对套接口s 的操作命令。
argp :指向cmd 命令所带参数的指针。

注释:
本函数可用于任一状态的任一套接口。它用于获取与套接口相关的操作参数,而与具体协议或通讯子系统无关。支持下列命令:
FIONBIO :允许或禁止套接口s 的非阻塞模式。argp 指向一个无符号长整型。如允许非阻塞模式则非零,如禁止非阻塞模式则为零。当创建一个套接口 时,它就处于阻塞模式(也就是说非阻塞模式被禁止)。这与BSD 套接口是一致的。WSAAsynSelect() 函数将套接口自动设置为非阻塞模式。如果 已对一个套接口进行了WSAAsynSelect() 操作,则任何用ioctlsocket() 来把套接口重新设置成阻塞模式的试图将以WSAEINVAL 失败。为了把套接口重新设置成阻塞模式,应用程序必 须首先用WSAAsynSelect() 调用(IEvent 参数置为0 )来禁至WSAAsynSelect() 。

转载于:https://www.cnblogs.com/gaoshaonian/p/9945428.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/388014.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

经典问题之「分支预测」

问题 来源 &#xff1a;stackoverflow 为什么下面代码排序后累加比不排序快&#xff1f; public static void main(String[] args) {// Generate dataint arraySize 32768;int data[] new int[arraySize];Random rnd new Random(0);for (int c 0; c < arraySize; c)data…

vi

vi filename :打开或新建文件&#xff0c;并将光标置于第一行首 vi n filename &#xff1a;打开文件&#xff0c;并将光标置于第n行首 vi filename &#xff1a;打开文件&#xff0c;并将光标置于最后一行首 vi /pattern filename&#xff1a;打开文件&#xff0c;并将光标置…

数字图像处理 python_5使用Python处理数字的高级操作

数字图像处理 pythonNumbers are everywhere in our daily life — there are phone numbers, dates of birth, ages, and other various identifiers (driver’s license and social security numbers, for example).电话号码在我们的日常生活中无处不在-电话号码&#xff0c;…

05精益敏捷项目管理——超越Scrum

00.我们不是不知道它会给我们带来麻烦&#xff0c;只是没想到麻烦会有这么多。——威尔.罗杰斯 01.知识点&#xff1a; a.Scrum是一个强大、特意设计的轻量级框架&#xff0c;器特性就是将软件开发中在制品的数量限制在团队层级&#xff0c;使团队有能力与业务落班一起有效地开…

带标题的图片轮询展示

为什么80%的码农都做不了架构师&#xff1f;>>> <div> <table width"671" cellpadding"0" cellspacing"0"> <tr height"5"> <td style"back…

linux java 查找进程中的线程

这里对linux下、sun(oracle) JDK的线程资源占用问题的查找步骤做一个小结&#xff1b;linux环境下&#xff0c;当发现java进程占用CPU资源很高&#xff0c;且又要想更进一步查出哪一个java线程占用了CPU资源时&#xff0c;按照以下步骤进行查找&#xff1a;(一)&#xff1a;通过…

定位匹配 模板匹配 地图_什么是地图匹配?

定位匹配 模板匹配 地图By Marie Douriez, James Murphy, Kerrick Staley玛丽杜里兹(Marie Douriez)&#xff0c;詹姆斯墨菲(James Murphy)&#xff0c;凯里克史塔利(Kerrick Staley) When you request a ride, Lyft tries to match you with the driver most suited for your…

Sprint计划列表

转载于:https://www.cnblogs.com/zhs20160715/p/9953586.html

MySQL学习【第十二篇事务中的锁与隔离级别】

一.事务中的锁 1.啥是锁&#xff1f; 顾名思义&#xff0c;锁就是锁定的意思 2.锁的作用是什么&#xff1f; 在事务ACID的过程中&#xff0c;‘锁’和‘隔离级别’一起来实现‘I’隔离性的作用 3.锁的种类 共享锁&#xff1a;保证在多事务工作期间&#xff0c;数据查询不会被阻…

Android WebKit

这段时间基于项目需要 在开发中与WebView的接触比较多&#xff0c;前段时间关于HTML5规范尘埃落定的消息出现在各大IT社区头版上&#xff0c;更有人说&#xff1a;HTML5将颠覆原生App开发 虽然我不太认同这一点 但是关于HTML5JSCSSNative的跨平台开发模式还是为很多企业节省了开…

jQuery的事件绑定和解绑

1、绑定事件 语法&#xff1a; bind(type,data,fn) 描述&#xff1a;为每一个匹配元素的特定事件&#xff08;像click&#xff09;绑定一个事件处理器函数。 参数解释&#xff1a; type (String) : 事件类型 data (Object) : (可选) 作为event.data属性值传递给事件对象的额外数…

软件测试框架课程考试_那考试准备课程值得吗?

软件测试框架课程考试By Levi Petty李维佩蒂(Levi Petty) This project uses a public, synthesized exam scores dataset from Kaggle to analyze average scores in Math, Reading, and Writing subject areas, relative to the student’s parents’ level of education an…

开博第一天

开博第一天 纪念一下 转载于:https://www.cnblogs.com/yang-9654/p/9959388.html

GitLab 11.9 正式发布,自动化工具 ChatOps 已开源

GitLab 11.9 已正式发布&#xff0c;该版本新增了两个和安全相关的特性&#xff0c;一是快速检查私密信息是否泄漏&#xff0c;从该版本起在 CI/CD 过程中会扫描开发者提交的信息是否包含私密内容&#xff0c;有的话会在合并 PR 时向开发者发送警报&#xff1b;二是改进了合并 …

DOCKER windows安装

DOCKER windows安装 DOCKER windows安装 1.下载程序包2. 设置环境变量3. 启动DOCKERT4. 分析start.sh5. 利用SSH工具管理6. 下载镜像 6.1 下载地址6.2 用FTP工具上传tar包6.3 安装6.4 查看镜像6.5 运行 windows必须是64位的 1.下载程序包 安装包 https://github.com/boot2doc…

为什么在Python代码中需要装饰器

Python is praised for its clarity and syntactic sugariness. In this article, I will teach you to use decorators in Python to make your code readable and clean.Python的清晰性和语法含糖度受到赞誉。 在本文中&#xff0c;我将教您在Python中使用装饰器&#xff0c;…

Elasticsearch Reference [6.7] » Modules » Network Settings

2019独角兽企业重金招聘Python工程师标准>>> Search Settings Node Network Settingsedit Elasticsearch binds to localhost only by default. This is sufficient for you to run a local development server (or even a development cluster, if you star…

【百度】大型网站的HTTPS实践(一)——HTTPS协议和原理

大型网站的HTTPS实践&#xff08;一&#xff09;——HTTPS协议和原理 原创 网络通信/物联网 作者&#xff1a;AIOps智能运维 时间&#xff1a;2018-11-09 15:07:39 349 0前言 百度于2015年上线了全站HTTPS的安全搜索&#xff0c;默认会将HTTP请求跳转成HTTPS。从今天开始&…

数据清理最终实现了自动化

苹果 | GOOGLE | 现货 | 其他 (APPLE | GOOGLE | SPOTIFY | OTHERS) Editor’s note: The Towards Data Science podcast’s “Climbing the Data Science Ladder” series is hosted by Jeremie Harris. Jeremie helps run a data science mentorship startup called Sharpest…

mui 与jquery 同时使用,$冲突解决办法。

(function($,doc,$$) { 。。。。。 }(mui, document, jQuery)); 使用$$代替jQuery。 var $$jQuery.noConflict();此方法也可以 转载于:https://www.cnblogs.com/mustanglqt/p/10608499.html