<?php
class iwanttolive extends Man\Core\SocketWorker
{
/**
* 确定包是否完整 return 0:完整 return X:还有X字节没有接收完
*/
public function onStart()
{
echo'启动';
global $suoyoushuju;
$suoyoushuju=array();
}
public function dealInput($buffer)
{
// 如果最后一个字符是\n代表数据读取完整,返回0
if($buffer === "\n")
{
return 0;
}
// 说明还有请求数据没收到,但是由于不知道还有多少数据没收到,所以只能返回1,因为有可能下一个字符就是\n
return 1;
}
/**
* 处理业务,当客户端数据接收完毕后触发(这里只是将客户端发来的字符串直接会写到客户端)
*/
public function dealProcess($buffer)
{
// $bufferss=str_replace("\n","",$buffer);
$bufferss=trim($buffer);
global $suoyoushuju;
$fanhui=array();
array_push($suoyoushuju,$bufferss);
echo '初始化所有数据';
print_r($suoyoushuju);
$ww=explode('&',$bufferss);
$www=$ww;
foreach ($suoyoushuju as $value) {
echo '索引'.$www;
echo '搜索范围'.$value;
if(strpos($value, $www)!=-1)
{
array_push($fanhui,$value);
echo'符合条件的放入$fangzhu数组';
print_r($fanhui);
}
else
{
echo '没搜索到相应数据';
}
}
return $this->sendToClient$fanhui);
}
}
?>
比方说每次客户端发送字符串给服务端 1234&few
服务端接收后放到$suoyoushuju
然后来遍历$suoyoushuju 是否包含1234 如果有 就添加到$fanhui 这个再发回客户端
上面代码我运行了下。。。
明显没按照我的逻辑么第一次还会运行初始化 第二次发送就没有了。。。
你的程序中有两处错误
if(strpos($value, $www)!=-1)
strpos 永远不会返回-1,返回值只有可能false或者不小于0的整数
return $this->sendToClient$fanhui);
这句有语法错误
并且sendToClient参数只能是字符串,否则会报错
上面两个错误解决后通过telnet测试(我开的是7473端口)运行结果如下
telnet 127.0.0.1 7473
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
1234&few
array (
0 => '1234&few',
)1234&few
array (
0 => '1234&few',
1 => '1234&few',
)1234&few
array (
0 => '1234&few',
1 => '1234&few',
2 => '1234&few',
)
结果应该是你预期的
还是不行
启动启动启动启动启动初始化所有数据
索引2134搜索范围2134&dw符合条件的放入$fangzhu数组
初始化所有数据
索引12345搜索范围2134&dw符合条件的放入$fangzhu数组
索引12345搜索范围12345&fe符合条件的放入$fangzhu数组
为什么第二次 初始化所有数据这个不会运行了
效果也是错的
输入12345&fe 应该是
索引12345搜索范围12345&fe符合条件的放 如
=> 2134&dw 这个2134明显没符合条件怎么也放入了
这句有问题,
if(strpos($value, $www)!=false)
应该是
if(strpos($value, $www)!==false)