• 締切済み

ConnectNamedPipeの接続待ち

はじめまして。 名前付きパイプを用いた、 サーバ側、クライアント側のプログラムを作成しています。 開発言語はVB6.0です。 サーバ、クライアント間の接続、データの送受信など、 ある程度のことは出来るようになったのですが、ひとつ問題が発生しました。 現在、サーバ・クライアント間の接続には、 サーバ側でConnectNamedPipe関数により、クライアント側の接続を待機し、 クライアント側でCreateFile関数で接続する、という方法を取っています。 この方法で一応接続は上手くいっているのですが、 サーバ側で、クライアント側の接続を待機した状態で、 クライアント側からの接続が行われない場合、 サーバ側のプログラムはConnectNamedPipe関数で、 いつまでも待機状態になってしまい、プログラムを終了することが出来ません。 そこで、ConnectNamedPipe関数の接続待ちにタイムアウト時間を設定する、 もしくは手動でキャンセルする、ということを行いたいのですが、 良い方法が見つかりません。 どなたか分かる方いましたらご解答宜しくお願いします。

みんなの回答

  • syama2006
  • ベストアンサー率38% (14/36)
回答No.1

最もやさしい方法は終了したい時にパイプに接続し、アプリで取り決めた終了電文を送信する方法です。 サーバー側では、クライアントからの接続で最初の電文を見て処理要求か終了要求かを判別することになります。

FIRE_1983
質問者

お礼

syama2006さん、 ご回答有難うございます。 確かにそのようにすれば、 サーバ側プログラムを終了させることが出来ますね。 ただ今回の場合は、 出来れば、クライアント側からサーバを終了させるのではなく、 サーバ側から終了を行えるようにしたいと思っています。 そのような方法はないのでしょうか?

関連するQ&A