[ZZ]C#におけるNamedPipeプロセス間通信
9193 ワード
本文はただ1つのテスト例で、コアコードはkernel 32である.dllのwindows api関数のセットです.ここでは深く研究しません.コードはcodeprojectにあります.
http://www.codeproject.com/KB/threads/dotnetnamedpipespart1.aspx
テストの効果は、aspxとconsole appにメッセージを送信した後にフィードバックを得ることができます.
コンソールappはサーバ側コードです.
クライアントのaspxコードは以下の通りです.
テスト環境はwindows vistaとwindows 2003
出典:blog.csdn作者:賈涛
http://www.codeproject.com/KB/threads/dotnetnamedpipespart1.aspx
テストの効果は、aspxとconsole appにメッセージを送信した後にフィードバックを得ることができます.
コンソール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作者:賈涛