Interprocess Communication using Named Pipes in C# + PHP

江枫思渺然 提交于 2019-11-28 04:53:19

问题


Interprocess Communication using Named Pipes in C# is easy, but im not exactly sure how to do this in php, or if its even possible. so i have these questions:

  1. Is named pipes possible in php?
  2. Is it possible to have a C# named pipe client, connect to a php named pipe server?
  3. how the heck would i code that? :)

an answer to any of the above questions would be so helpful.. thanks :)

edit: Its a stand alone php program, not a web-based app.

edit2: The named pipe server can be in the C# side, or the PHP side, it doesnt matter. I have made C# examples for both.. but i dont know where to start for php


回答1:


Can you use sockets? Why does it have to be a pipe?

Looks like PHP has lots for sockets: http://us3.php.net/sockets

Stream Functions:
http://php.net/manual/en/ref.stream.php

Did you see this?
PHP and named pipes: 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

EDIT I am assuming you are on windows (C#) so that may not work....




回答2:


If it is already created then you can open a named pipe as a file using PHP's fopen function.

In windows the pipe "file" path looks like "\\.\pipe\pipe_name", however there is an open issue in PHP which prevents this from working. The workaround is to use the computer's name instead of the dot in the path:

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

Though I vote for sockets like Tommy recommended, they're easy, cross-platform, and inter-machine if need be.



来源:https://stackoverflow.com/questions/3623198/interprocess-communication-using-named-pipes-in-c-sharp-php

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!