免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: flyingnn
打印 上一主题 下一主题

socket_read() 如何实现超时. [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-12-29 19:34 |只看该作者
原帖由 flyingnn 于 2008-12-29 14:25 发表
另外有个问题就是,为什么只有客户端输入字符后,才会输出这一句呢?
echo $str=date('Y-m-d H:i:s ')."Hello $remote_hostremote_port! had connected! \r\n";
而不是客户一连接上就输出呢?


因为你这行程序是在 socket_select() 调用之后啊?!!

论坛徽章:
0
12 [报告]
发表于 2008-12-30 10:08 |只看该作者
原帖由 hightman 于 2008-12-29 19:32 发表


你可以再判断socket_read得到的数据最后一个字节是不是\n


我也是不相信是这样的,又试了一下,回车后,在行尾多了\r\n吧,然后socket_read()读到\r就返回了.
环境是这样,PHP的程序运行在LINUX,在WIN2003下用TELNET 连接,手工输入字符,开始前面的几十到100来行左右是正常的,要回车才有结果返回,后面再继续输入,发觉还没有回车,就有结果返回了,返回的结果,最后一个字符是\r,我是连续输入,没有按回车的.
然后以用PUTTY SSH到LINUX,用TELNET 连接,发觉是正常的,要回车后才有结果返回.

论坛徽章:
0
13 [报告]
发表于 2008-12-30 10:14 |只看该作者
原帖由 hightman 于 2008-12-29 19:34 发表


因为你这行程序是在 socket_select() 调用之后啊?!!


哦,明白了,原来是这样.

论坛徽章:
0
14 [报告]
发表于 2008-12-30 11:48 |只看该作者
原帖由 flyingnn 于 2008-12-29 14:04 发表
现在就是这样的,用 NON-BLOCKING 的 IO, socket_set_nonblock(),搭配 socket_select(),这样的情况,是客户连上后,如果没有任何输入,就会超时,但是如果客户连接上以后,输入了一些字符,就不会超时了,然后,socket_r ...

看了说明,好像是有这样类似的问题.
http://www.php.net/manual/zh/function.socket-read.php
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP