[ZZ]C#におけるNamedPipeプロセス間通信

9193 ワード

本文はただ1つのテスト例で、コアコードはkernel 32である.dllのwindows api関数のセットです.ここでは深く研究しません.コードはcodeprojectにあります.
  http://www.codeproject.com/KB/threads/dotnetnamedpipespart1.aspx
テストの効果は、aspxとconsole appにメッセージを送信した後にフィードバックを得ることができます.
C#中用NamedPipe进程间通信
コンソールappはサーバ側コードです.

  
    
usingSystem;  
usingAppModule.InterProcessComm;  
usingAppModule.NamedPipes;  
usingSystem.Threading;  
namespaceServer  
{  
  classProgram  
  {  
    
// **c# namedpipe  
    
// ** codeproject  
    
// ** http://www.codeproject.com/KB/threads/dotnetnamedpipespart1.aspx   
    
// ** , AppModule.InterProcessComm AppModule.NamedPipes dll  
    
// ** dll ,  
    
// ** byjinjazz( , )  
    staticvoidMain( string []args)  
    {  
      ServerPipeConnectionPipeConnection
= newServerPipeConnection( " np-test-by-jinjazz " , 512 , 512 , 5000 , false );  
      Console.WriteLine(
" listening.. " );  
      
while ( true )  
      {  
        
try  
        {  
          PipeConnection.Disconnect();  
          PipeConnection.Connect();  
          stringrequest
= PipeConnection.Read();  
          
if ( ! string .IsNullOrEmpty(request))  
          {  
            Console.WriteLine(
" get: " + request);  
            PipeConnection.Write(
" get: " + request);  
            
if (request.ToLower() == " break " ) break ;  
          }  
        }  
        
catch (Exceptionex)  
        {  
          Console.WriteLine(ex.Message);  
          
break ;  
        }  
      }  
      PipeConnection.Dispose();  
      Console.Write(
" pressanykeytoexit.. " );  
      Console.Read();  
    }  
  }  
} 

クライアントのaspxコードは以下の通りです.

  
    
usingSystem;  
usingSystem.Web;  
usingAppModule.InterProcessComm;  
usingAppModule.NamedPipes;  
publicpartialclass_Default:System.Web.UI.Page  
{  
  protectedvoidPage_Load(objectsender,EventArgse)  
  {  
    Response.Write(SendRequest(
" asdf " ));  
  }  
  
/// <summary>  
  
/// namepiped  
  
/// </summary>  
  
/// <paramname="request"> </param>  
  
/// <returns> </returns>  
  stringSendRequest(stringrequest)  
  {  
    stringresponse
= "" ;  
    IInterProcessConnectionclientConnection
= null ;  
    
try  
    {  
      clientConnection
= newClientPipeConnection( " np-test-by-jinjazz " , " . " );  
      clientConnection.Connect();  
      clientConnection.Write(request);  
      response
= clientConnection.Read();  
      clientConnection.Close();  
    }  
    
catch (Exceptionex)  
    {  
      clientConnection.Dispose();  
      response
= ex.Message;  
    }  
    returnresponse;  
  }  
} 

テスト環境はwindows vistaとwindows 2003
出典:blog.csdn作者:賈涛