2010-09-02 91 views
4

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

  1. 命名管道可能在PHP?
  2. 是否有可能有一个C#命名管道客户端,连接到一个PHP命名管道服务器?
  3. 我该怎么编码? :)

回答任何上述问题将是所以有帮助..谢谢:)

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

edit2:命名管道服务器可以在C#端或PHP端,它没有关系。我已经使C#两个例子..但我不知道从哪里开始的PHP

+0

这是在Windows上运行吗? – joshperry 2010-09-02 01:31:56

回答

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#),因此可能无法正常工作....

+0

我想如果命名管道不起作用,那么这是一种可能性..让我们打电话给那个计划B :) – caesay 2010-09-02 01:23:58

+0

@Tommy:你为什么要偷我的名字?哈哈 – 2010-09-02 01:24:44

+0

不,我在窗户上。而且,我需要管道是多方位的。所以,php需要打开管道,能够写入管道,并等待输入并读取管道服务器发送的任何其他内容。 – caesay 2010-09-02 01:32:32

4

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

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

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

虽然我投插座像汤米建议,他们很容易,跨平台,和机器间如果需要的话。

相关问题