phpsocks5/Workerman/Protocols/Text.php
2015-04-04 21:46:31 +08:00

61 lines
1.6 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace Workerman\Protocols;
use \Workerman\Connection\TcpConnection;
/**
* Text协议
* 以换行为请求结束标记
* @author walkor <walkor@workerman.net>
*/
class Text
{
/**
* 检查包的完整性
* 如果能够得到包长则返回包的长度否则返回0继续等待数据
* @param string $buffer
*/
public static function input($buffer ,TcpConnection $connection)
{
// 由于没有包头,无法预先知道包长,不能无限制的接收数据,
// 所以需要判断当前接收的数据是否超过限定值
if(strlen($buffer)>=TcpConnection::$maxPackageSize)
{
$connection->close();
return 0;
}
// 获得换行字符"\n"位置
$pos = strpos($buffer, "\n");
// 没有换行符无法得知包长返回0继续等待数据
if($pos === false)
{
return 0;
}
// 有换行符,返回当前包长,包含换行符
return $pos+1;
}
/**
* 打包,当向客户端发送数据的时候会自动调用
* @param string $buffer
* @return string
*/
public static function encode($buffer)
{
// 加上换行
return $buffer."\n";
}
/**
* 解包当接收到的数据字节数等于input返回的值大于0的值自动调用
* 并传递给onMessage回调函数的$data参数
* @param string $buffer
* @return string
*/
public static function decode($buffer)
{
// 去掉换行
return trim($buffer);
}
}