boost.asio是搞笑来的?
时间:2011-12-06
来源:互联网
开2个客户端用telnet方式连上echo_server,长时间后关掉telnet后,echo_server竟然不会断开客户端?
而且在echo_server的机器上用netstat -ano -p tcp查看,服务端于客户端的连接还处于ESTABLISHED状态,这就是所谓的终极网络库?搞笑的吧!
用asio到商业项目的大牛来解释下?
作者: pker911 发布时间: 2011-12-06
尼玛我客户端机器telnet都关掉了,服务端上竟然还是ESTABLISHED状态,无敌的asio。。。
作者: pker911 发布时间: 2011-12-06
如果因为存在某个库,而使你丧失了学习此技术之内部机制的可能,那么,我劝你还是不要先使用这个库为好。
就像这个asio,如果因为它的存在,而令你不再学习异步重叠I/O,那么,还是先不要使用这个库为好。
作者: sinservice 发布时间: 2011-12-06
就像我telnet测试一样,客户端不write,难道asio就没办法返回客户端断开了?
连底层onclose()都不提供,你说学习啥呢?为了学哪些晦涩难懂的所谓func/bind吗?
自己运行下async_tcp_echo_server.cpp测试下再来喷可行?
作者: pker911 发布时间: 2011-12-06
难道asio只有在handle_read/handle_write的时候出现error_code才知道客户端已经断开吗?
就像我telnet测试一样,客户端不write,难道asio就没办法返回客户端断开了?
连底层onclose()都不提供,你说学习啥呢?为了学哪些晦涩难懂的所谓func/bind吗?
自己运行下async_tcp_echo_server.cpp测试下再来喷可行?
asio当然在机制仅会支持TCP或UDP支持的feature,而TCP保活超时是半个小时以上,半个小时(或45分钟)后会产生一个“网络错误”,那个时候就asio就会给客户事件了。
如果要建立商业级的服务器软件,仅仅依赖“传输层”的feature是远远不够的,你要自己做心跳来保活。
作者: sinservice 发布时间: 2011-12-06
当你收到一个包,就对这个socket开始计时,如果再收到包就重新计时,如果超时,就自己产生一个事件以关掉socket。
作者: sinservice 发布时间: 2011-12-06
不要跟我讲应用层面要保证的机制,写server都会这样处理,现在问题关键是底层的所谓"终极神器"的asio,在socket keeplive超时后,并无任何异常触发并返回,你可明白?
作者: pker911 发布时间: 2011-12-06
ok,如果说asio建立在tcp协议栈上,那么保活超时之后,也要给调用者返回所谓的“网络错误”,事实上是并无任何返回(handle_read未触发),还是麻烦LS的兄台自己跑一下example那个例子,再来解答,哦可?
不要跟我讲应用层面要保证的机制,写server都会这样处理,现在问题关键是底层的所谓"终极神器"的asio,在socket keeplive超时后,并无任何异常触发并返回,……
你等了多长时间?
作者: sinservice 发布时间: 2011-12-06
作者: pker911 发布时间: 2011-12-06
我相信select/iocp都不可能出现这么低级的问题(同样的方法测试过)
作者: pker911 发布时间: 2011-12-06
昨天晚上在公网机器上跑的server,然后在另外2个公网机器上开的telnet客户端,今天早上发现连接都没断很正常,然后把2个telnet关掉后,server没有任何hand_read()调用,无error_code,在netstat -ano -p tcp里面,还显示与2个telnet的连接处于ESTABLISHED已连接状态,其他的话我也不想多说了,谁不相信谁自己试下就知道了,无奈的asio……
“在netstat -ano -p tcp里面,还显示与2个telnet的连接处于ESTABLISHED已连接状态”,
呵呵,你想想看。 tcp协议栈认为这两个连接依然是ESTABLISHED,这跟asio有什么关系呢?
作者: sinservice 发布时间: 2011-12-06
server用的官方example代码,无任何改动。
我相信select/iocp都不可能出现这么低级的问题(同样的方法测试过)
select / iocp不用你本机的tcp协议栈吗?
ESTABLISHED状态是协议栈决定的,还是asio抑或iocp决定的?
作者: sinservice 发布时间: 2011-12-06
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28