首页
下载
文档
社区
视频
捐赠
源代码
赞助商
AOT 编译器
AI 助理
商业产品
PHP AOT 原生编译器
Swoole-Compiler 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
socket接收用户从浏览器发过来的信息,unpack解包出来的是什么?
{{{php function uncode($str){ $mask = array(); $data = ''; $msg = unpack('H*',$str); $head = substr($msg[1],0,2); if (hexdec($head{1}) === 8) { $data = false; }else if (hexdec($head{1}) === 1){ $mask[] = hexdec(substr($msg[1],4,2)); $mask[] = hexdec(substr($msg[1],6,2)); $mask[] = hexdec(substr($msg[1],8,2)); $mask[] = hexdec(substr($msg[1],10,2)); $s = 12; $e = strlen($msg[1])-2; $n = 0; for ($i=$s; $i<= $e; $i+= 2) { //chr() 函数从指定的 ASCII 值返回字符。 $data .= chr($mask[$n%4]^hexdec(substr($msg[1],$i,2))); $n++; } } return $data; } }}} $str是socket_recv()接收过来的数据, 1. 那解包出来的$msg代表的是什么?是通讯协议? 2. $s=12是什么? 3. $e又代表什么? 4. chr($mask[$n%4]^hexdec(substr($msg[1],$i,2))); 帮忙解析解析
发布于10年前 · 0 次浏览 · 来自
提问
Y
Yeap!
{{{php function uncode($str){ $mask = array(); $data = ''; $msg = unpack('H*',$str); $head = substr($msg[1],0,2); if (hexdec($head{1}) === 8) { $data = false; }else if (hexdec($head{1}) === 1){ $mask[] = hexdec(substr($msg[1],4,2)); $mask[] = hexdec(substr($msg[1],6,2)); $mask[] = hexdec(substr($msg[1],8,2)); $mask[] = hexdec(substr($msg[1],10,2)); $s = 12; $e = strlen($msg[1])-2; $n = 0; for ($i=$s; $i<= $e; $i+= 2) { //chr() 函数从指定的 ASCII 值返回字符。 $data .= chr($mask[$n%4]^hexdec(substr($msg[1],$i,2))); $n++; } } return $data; } }}} $str是socket_recv()接收过来的数据, 1. 那解包出来的$msg代表的是什么?是通讯协议? 2. $s=12是什么? 3. $e又代表什么? 4. chr($mask[$n%4]^hexdec(substr($msg[1],$i,2))); 帮忙解析解析
赞
0
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
登录
后参与评论
评论
2015-12-16
✔
✔Ice_曲
这就是协议解析过程啊,建议看下WebSocket协议的详解。
赞
0
回复