在C#+ PHP中使用命名管道进行进程间通信

时间:2010-09-02 01:18:30

标签: c# php interprocess

使用C#中的命名管道进行进程间通信很简单,但我不确定如何在php中执行此操作,或者甚至可能。所以我有这些问题:

  1. 在php中可以命名管道吗?
  2. 是否可以拥有一个C#命名管道客户端,连接到php命名管道服务器?
  3. 我怎么编码呢? :)
  4. 上述任何一个问题的答案都如此有用..谢谢:)

    编辑:它是一个独立的php程序,而不是基于网络的应用程序。

    edit2:命名管道服务器可以在C#端,也可以在PHP端,无关紧要。我为这两个做了C#示例..但我不知道从哪里开始php

2 个答案:

答案 0 :(得分:4)

如果已经创建了,那么您可以使用PHP的fopen函数打开命名管道作为文件。

在Windows中,管道“文件”路径看起来像“\\。\ pipe \ pipe_name”,但PHP中有一个open issue阻止它工作。解决方法是使用计算机的名称而不是路径中的点:

$name = php_uname('n');
$pipe = fopen("\\\\" . $strComputername . "\\pipe\\pipe_name", "r+");

虽然我投票支持像Tommy推荐的套接字,但如果需要的话,它们很容易,跨平台,并且在机器间。

答案 1 :(得分:2)

你能用套接字吗?为什么它必须是管道?

看起来PHP有很多套接字: http://us3.php.net/sockets

流功能:
http://php.net/manual/en/ref.stream.php

你看到了吗? PHP和命名管道:http://my.opera.com/zomg/blog/2007/08/29/php-and-named-pipes

<?php
//Open pipe and write some text to it.
//Mode must be r+ or fopen will get stuck.
$pipe = fopen('testpipe','r+');
fwrite($pipe,'this is some text');
fclose($pipe);
?>

posix_mkfifo:
http://www.phpbuilder.com/manual/function.posix-mkfifo.php

编辑我假设您使用的是Windows(C#),因此可能无法使用....