想实现的功能是这样:
客户端PHP页面,执行某个任务,比如新建站点,通过某种方式通知 后端的 nc 监听程序,然后执行相关脚本,不如创建ftp账号、新建目录等。
但是,应该怎样才能够通过 php 发消息给 nc 呢?
求教!
以下是php客户端:
<code class="lang-php">$fp = fsockopen ("udp://127.0.0.1",40030,$errno,$errstr,30); if(!$fp){ echo "$errstr ($errno) <br>"; }else{ fwrite($fp,"Hello nc"); echo "Success"; fclose($fp); } </code>
以下是 shell 服务端:
<code class="lang-shell">#!/bin/bash killall 'nc' >/dev/null 2>&1 nc -l -u 40030 | while read Line do echo $Line done </code>
可是为什么不输出呢?
想实现的功能是这样:
客户端PHP页面,执行某个任务,比如新建站点,通过某种方式通知 后端的 nc 监听程序,然后执行相关脚本,不如创建ftp账号、新建目录等。
但是,应该怎样才能够通过 php 发消息给 nc 呢?
求教!
以下是php客户端:
<code class="lang-php">$fp = fsockopen ("udp://127.0.0.1",40030,$errno,$errstr,30); if(!$fp){ echo "$errstr ($errno) <br>"; }else{ fwrite($fp,"Hello nc"); echo "Success"; fclose($fp); } </code>
以下是 shell 服务端:
<code class="lang-shell">#!/bin/bash killall 'nc' >/dev/null 2>&1 nc -l -u 40030 | while read Line do echo $Line done </code>
可是为什么不输出呢?
因为Bash的read命令是 Read a line from the standard input and split it into fields.
所以你需要输出一个换行符:fwrite($fp,"Hello nc\n");
另外为什么你不直接在PHP使用popen执行脚本,干嘛多此一举用nc?你这个nc连接close掉就close掉了。
后端为什么用nc呢,后端也可以用PHP写啊,例如使用workerman这类的服务框架
不知道你在干什么。不过竟然你提到安全了,那么要么别用 UDP,要么自己加验证和完整性检查。特别你竟然用 nc 来处理 UDP,这样消息界限就没了啊。