跑定制通讯协议的JsonNL代码,不符合预期,哪里出错了吗?

Sanlence

代码一模一样,但是运行不了,然后在start.php中加入了
// 启动2个进程对外提供服务
$json_worker->count = 2;
服务端可以运行了,因为没有示例客户端怎么通信的,我还是按照tcp那样通信:
telnet 127.0.0.1 1234
不过我想看到服务端的echo打印,因为程序中有一行代码是:
echo $data
但是一直没打印。
之后我就试试在客户端打印出来$data,代码换成这样:
$connection->send(array('code'=>0, 'msg'=>'ok', 'data' => $data));得到的结果是:

[attach]2017[/attach]
 
为什么会出现这种结果呢?
另外,自己定义的协议也是使用telnet来测试通信吗?

阅读 1069
1个回答

喵了个咪

jsonNL看起来应该是传输json字符串的协议吧,what不是json格式,所以服务端解码json得到的null,应该是这样的

  • Sanlence 2019-05-11

    嗯,重新看了一下手册也发现了这个问题,谢谢哈

  • Sanlence 2019-05-11

    不过,自定义的协议,如果数据从串口通过TCP协议发出来,而我的协议是JsonNL,可以接受得到吗?

  • 喵了个咪 2019-05-11

    只要是tcp过来的就可以接收吧

  • Sanlence 2019-05-11

    我现在输入{"type":"message","content":"hello"},可以运行,但是按照协议,后面有一个\n才行。我在telnet输入结束后按下Enter键就会自动带一个\n吗?

  • Sanlence 2019-05-11

    我刚才网上搜索了一下,会带上\r\n,但是搜索不到怎么在输入时,去掉这个\r\n

  • Sanlence 2019-05-11

    我把\n换成了\t,输入数据:{"type":"message","content":"hello"}\t,发送过去后,服务器那边没有反应,这是为什么?按道理,我通过\t来计算包的长度呀

  • 喵了个咪 2019-05-12

    \t是制表符,在telnet里面输入\t表示字符串\t,并不是制表符啊,按tab键才是制表符