NamedPipeServerStreamとNamedPipeServerClientが(それぞれPipeDirection = PipeDirection.InOutの場合)NamedPipeServerStreamとNamedPipeServerClientがメッセージを送信できる優れたサンプルを探しています。今のところはthis msdn articleしか見つかりませんでした。しかしそれはサーバだけを記述します。誰もこのサーバに接続するクライアントがどのように見えるかを知っていますか?NamedPipeServerStreamのサンプルとNamedPipeServerClientがPipeDirection.InOutを必要とする
18
A
答えて
33
サーバーは接続を待っていますが、単純なハンドシェイクとして「Waiting」という文字列を送信すると、クライアントはこれを読み取り、「Test Message」の文字列を返します私のアプリでは実際にはコマンドライン引数です)。
WaitForConnection
がブロックされているので、別のスレッドで実行することをお勧めします。
class NamedPipeExample
{
private void client() {
var pipeClient = new NamedPipeClientStream(".",
"testpipe", PipeDirection.InOut, PipeOptions.None);
if (pipeClient.IsConnected != true) { pipeClient.Connect(); }
StreamReader sr = new StreamReader(pipeClient);
StreamWriter sw = new StreamWriter(pipeClient);
string temp;
temp = sr.ReadLine();
if (temp == "Waiting") {
try {
sw.WriteLine("Test Message");
sw.Flush();
pipeClient.Close();
}
catch (Exception ex) { throw ex; }
}
}
同じクラス、サーバー方法
private void server() {
var pipeServer = new NamedPipeServerStream("testpipe", PipeDirection.InOut, 4);
StreamReader sr = new StreamReader(pipeServer);
StreamWriter sw = new StreamWriter(pipeServer);
do {
try {
pipeServer.WaitForConnection();
string test;
sw.WriteLine("Waiting");
sw.Flush();
pipeServer.WaitForPipeDrain();
test = sr.ReadLine();
Console.WriteLine(test);
}
catch (Exception ex) { throw ex; }
finally {
pipeServer.WaitForPipeDrain();
if (pipeServer.IsConnected) { pipeServer.Disconnect(); }
}
} while (true);
}
}
関連する問題
- 1. インテルESGチュートリアルとサンプルが必要
- 2. NamedPipeServerStreamとWaitForConnectionメソッド
- 3. はasp.net 3.5 MVC2 Oracleデータベースのサンプル・アプリケーションを必要とする
- 4. シェルスクリプトを実行するためのサンプルJavaコードが必要
- 5. Django bigのサンプルが必要アップロードファイルハンドラメソッドでアップロードする
- 6. CoreDataBooksサンプルでUndoManagerは必要ですか?
- 7. データベースを扱うサンプルのSencha Touchアプリケーションが必要です
- 8. mysqlの</p> <p>サンプルされ、以下の機能とデータベースとのMVCを使用してPHPのコードとサンプルWebアプリケーションが必要ですMVC
- 9. ルビーが対 './blahblah.rb' を必要とFile.expand_path( '../ blahblah'、__FILE__)を必要と
- 10. ネットワーク上にあるWEBアプリケーションとは別のシステムに接続する方法のサンプルが必要ですか?
- 11. TweenLiteのサンプルを必要に応じて動作させるにはクロージャが必要ですか?
- 12. サンプルPHPを理解するのに役立つ必要があります。
- 13. Javaループがセッターを必要とする
- 14. がBPELチュートリアルを必要とする
- 15. Filenotfoundeception Javaがフルパスを必要とする
- 16. なぜ我々はanalysis_portが必要なときにanalysis_exportを必要とする
- 17. Javascriptで変数を左から右に移動する必要があります。教授は、サンプルとして
- 18. ヘルプを必要とする
- 19. get_user()がワードプレスで必要とするファイル
- 20. ドッカーコンテナは、私が必要とするルーティング
- 21. ポップアップウィンドウで新しいOAuth2ダイアログで作業サンプルが必要
- 22. 私はPythonユニットのサンプルを必要としています。鼻でsqlalchemyモデルを作成する
- 23. UMLダイアグラムとプランニングヘルプが必要
- 24. StringBuilderとStringBuffer - ニーモニックが必要
- 25. verticaSDK.jarとBuildInfo.javaファイルが必要
- 26. dojoが必要とスコープ
- 27. のRailsアプリ:必要と対ブートストラップは、ブートストラップ・スプロケットを必要と
- 28. Androidのエミュレータネットワーキングとが必要です
- 29. phpとmysqliのヘルプが必要です
- 30. '/home/../http/'が '/ http /'を必要とするほど速く必要ですか?
ありがとうございました!私のコードで何が問題であったかを理解するのを助けてくれました。私は、クライアントから別のスレッドで何かを読むのを待っているサーバを残していました。同時に、クライアントにメッセージを送信しようとしていました。コードはsw.WriteLineにぶら下がっていました。それは、サーバーがメッセージを待って、同じ時間に1つ送信することはできないようです。 – Nat
シンプルで透明です。 +1 – Artiom
これは私が見つけた最もシンプルでクリーンな(DllImportなし)ソリューションです。ありがとう! – Lensflare