代码之家  ›  专栏  ›  技术社区  ›  syaz

PHP Web服务器连接到同一服务器上的C#程序-我在寻找什么?

  •  0
  • syaz  · 技术社区  · 16 年前

    我要找的神奇关键词是什么?起初我想到socket,但每次socket搜索都涉及TCP上的服务器客户端。。。这是同一台机器,所以理论上我可以把环回地址放进去,然后正常运行。但这是一种过分的方法还是唯一的方法?

    提前谢谢。

    编辑:我的C#程序基本上是一个守护进程,它将等待来自PHP脚本的命令。所以我可以远程访问该网站并指导该C#应用程序。

    3 回复  |  直到 16 年前
        1
  •  2
  •   Peter M    16 年前

    我建议客户机/服务器架构使用TCP/IP(甚至UDP)(或另一种MS消息传递协议),以便与您的C#程序通信。实际上,您所做的是为专用硬件编写一个设备驱动程序。通过使其成为客户机/服务器,您可以:

    • 将代码转换为Windows服务,该服务可以在web服务器可以连接到的任何计算机上运行,而不仅仅是本地计算机。
    • 轻松地让服务器处理多个连接,以便web服务器以外的客户端可以访问硬件,并以合理的方式处理访问争用。考虑调试/测试硬件的测试控制台。
    • 在简历中添加一句关于编写客户机/服务器系统和windows服务的妙语!

    编辑

    • 如果小心编写,还可以抽象服务以同时处理多个设备
        2
  •  1
  •   Stacey Richards    16 年前

    function execute($command, $stdin) {
        $pipes = array();
        $process = proc_open($command, array(array('pipe', 'r'), array('pipe', 'w'), array('pipe', 'w')), $pipes);
        if ($stdin) fwrite($pipes[0], $stdin);
        fclose($pipes[0]);
        $stdout = '';
        while(!feof($pipes[1])) $stdout .= fgets($pipes[1], 1024);
        fclose($pipes[1]);
        $stderr = '';
        while(!feof($pipes[2])) $stderr .= fgets($pipes[2], 1024);
        fclose($pipes[2]);
        $return_value = proc_close($process);
        return array($stdout, $stderr, $return_value);
    }
    

    $handle = fopen("http://localhost:8888/someurl?someparam=somevalue", "r");
    
        3
  •  1
  •   raspi    16 年前