huangzhu321 发布于 2017-05-14 20:48

想实现的功能是这样:
客户端PHP页面,执行某个任务,比如新建站点,通过某种方式通知 后端的 nc 监听程序,然后执行相关脚本,不如创建ftp账号、新建目录等。

但是,应该怎样才能够通过 php 发消息给 nc 呢?
求教!

以下是php客户端:

$fp = fsockopen ("udp://127.0.0.1",40030,$errno,$errstr,30);
if(!$fp){
    echo "$errstr ($errno) 
"; }else{ fwrite($fp,"Hello nc"); echo "Success"; fclose($fp); }

以下是 shell 服务端:

#!/bin/bash
killall 'nc' >/dev/null 2>&1
nc -l -u 40030 | while read Line
do
    echo $Line
done

可是为什么不输出呢?

3 个回答
  • 因为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掉了。

    2017-05-15 07:57 回答
  • 后端为什么用nc呢,后端也可以用PHP写啊,例如使用workerman这类的服务框架

    2017-05-15 14:57 回答
  • 不知道你在干什么。不过竟然你提到安全了,那么要么别用 UDP,要么自己加验证和完整性检查。特别你竟然用 nc 来处理 UDP,这样消息界限就没了啊。

    2017-05-15 09:12 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
活跃用户
  • 1
    问道摩托
  • 2
    袁广龙976丶
  • 3
    逍遥子
  • 4
    亮仔
  • 5
    芙蓉花
  • 6
    作小die_syj
  • 7
    王丽珠景平怡伦_621
  • 8
    CH_Double_C
  • 9
    adfa3sd5f6a
  • 10
    欣欣大妮
PHP1.CN | 中国最专业的PHP中文社区 | PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | PHP问答
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有