Socket的Connected属性
来源:互联网 发布:linux 安装万兆网卡 编辑:程序博客网 时间:2024/06/05 16:11
最近在做一个接口,用到了Socket异步通信。
调试了3天了,一直将Socket的Connected属性作为客户端和服务器端是否连接上的依据。今天发现我错了。
下面是从一个csdn博友写的,很好。
http://blog.csdn.net/xiaobai1593/article/details/7285930
Connected 属性获取截止到最后的 I/O 操作时 Socket 的连接状态。当它返回 false 时,表明 Socket要么从未连接,要么已断开连接。
Connected 属性的值反映最近操作时的连接状态。如果您需要确定连接的当前状态,请进行非阻止、零字节的 Send 调用。如果该调用成功返回或引发 WAEWOULDBLOCK 错误代码 (10035),则该套接字仍然处于连接状态;否则,该套接字不再处于连接状态。
如果调用用户数据报协议 (UDP) 套接字上的 Connect,则 Connected 属性始终返回 true;不过,此操作不更改 UDP 的内在无连接特性。
下面是在C#中测试客户端和服务端是否连接的方法:
如果是进行单步调试,发现:只有在Connect()方法之后为True,然后在下一步执行时,就变为了False。控制台输出的为"false"
如果是直接执行,则输出出来是"True"
按说,在单步调试的时候,刚执行过Send()操作,应该挺“最近”的了,但在输出的时候还是"false";而直接执行的时候则没问题
说明这个“最近”是很短暂的,调试的时候根本无法判断的!
结论:
Socket.Connected不能在调试时作为套接字是否连接的判断依据;而可以加入控制台输出语句来判断套接字的连接状况!
- Socket的Connected属性
- 不应该使用Connected属性作为Socket是否连接上的依据
- Socket是否connected?
- BIM配置数据中心报socket is not connected的问题。
- boost::asio::ip::tcp::socket is connected?(如何知道socket的链接是链接或断开?)
- boost::asio::ip::tcp::socket is connected?(如何知道socket的链接是链接或断开?)
- 设置Socket的属性
- 设置socket的属性
- BIM中更新数据中心后,选择账套提示socket is not connected的问题
- Socket.Connected不能在调试时作为套接字是否连接的判断依据
- Connected to the target VM,address:'localhost:9120',transport:'socket'
- C#的Socket的Available属性
- socket.recerve(byte[]) 的一个属性
- 融汇贯通实用的socket属性典型讲解
- KEIL提示“No target connected”的解决方法
- 关于TcpClient.Connected的一个坑
- 基于矩阵实现的Connected Components算法
- 基于矩阵实现的Connected Components算法
- cache FIFO, LFU 算法 讨论与实现
- 清空redis缓存
- 新的起点,新的平台
- Android判断手机是数据连接还是wifi连接
- jquery 文字无缝滚动
- Socket的Connected属性
- Android Calendar获取年月日时分秒毫秒
- 极光推送
- DM368开发 -- 再论 UBL
- Tensorflow安装
- PMP
- 量子计算入门-第二部分
- exit函数和_exit函数之间的区别
- MongoDB一个基于分布式文件存储的数据库(介于关系数据库和非关系数据库之间的数据库)