<?php class Listen extends CI_Controller { /* public function __construct() { parent::__construct(); }*/ public function index() { //确保在连接客户端时不会超时 ignore_user_abort(true);// 后台运行 set_time_limit(0); // 取消脚本运行时间的超时上限 header("Connection:close");//告诉浏览器,连接关闭了,这样浏览器就不用等待服务器的响应 header("HTTP/1.1 200 OK");//可以发送200状态码,以这些请求是成功的,要不然可能浏览器会重试,特别是有代理的情况下 $ip = '130.33.00.00'; $port = 44001; //导入ci数据库类 $this->load->database(); //设置缓存类型 $this->load->driver('cache', array('adapter' => 'memcached', 'backup' => 'file')); /*---------------- 以下操作都是手册上的 -------------------*/ if(($sock = socket_create(AF_INET,SOCK_STREAM,SOL_TCP)) < 0) { echo "socket_create() 失败的原因是:".socket_strerror($sock)."\n"; } if(($ret = socket_bind($sock,$ip,$port)) < 0) { echo "socket_bind() 失败的原因是:".socket_strerror($ret)."\n"; } if(($ret = socket_listen($sock,4)) < 0) { echo "socket_listen() 失败的原因是:".socket_strerror($ret)."\n"; } do { if (($msgsock = socket_accept($sock)) < 0) { // echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n"; // break; socket_close($msgsock); socket_close($sock); }else{ $buf = socket_read($msgsock,8192); $dates = date("Ymdhis",time()); $lenth = strlen($buf); $new = ""; for ($i=0;$i<$lenth;$i++){ $new .= bin2hex($buf[$i])." "; } //$this->lk_common->updateTableValue('listen',array('content'=>$new,'createtime'=>$dates)); $data=array('content'=>$new,'createtime'=>$dates); $this->db->insert('listen',$data); socket_close($msgsock); } }while (true); socket_close($sock); } }
求大神指教啊 php的socket编程 为什么接收一次数据后 后面的数据接收不了了
最新推荐文章于 2021-05-18 00:39:56 发布