5

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

caesay
  • 16,932
  • 15
  • 95
  • 160

2 Answers2

4

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.

joshperry
  • 41,167
  • 16
  • 88
  • 103
2

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....

T.T.T.
  • 33,367
  • 47
  • 130
  • 168
  • I suppose if named pipes doesnt work, then that is a possibility.. lets call that plan B :) – caesay Sep 02 '10 at 01:23
  • @Tommy: why do you have to steal my name? haha – T.T.T. Sep 02 '10 at 01:24
  • 1
    no, im on windows. and, i need the pipe to be multi-directional. so, the php needs to open the pipe, be able to write to the pipe, and also wait for input and read anything else sent from the pipe server. – caesay Sep 02 '10 at 01:32
  • And, what about reading after writing ? – Jerry Nov 29 '21 at 18:05