VC2008上で開発を行っています。
プロセス間通信で名前付きパイプの使用方法ですが、複数クライアント対1サーバで通信
を行いたいと思っています。
データはクライアントからサーバに対してのみ送信されます。
サーバ側の読み込み(ReadFile())を1ハンドルで複数クライアントからのデータを受信し
たいのですが、可能でしょうか?
1対1の通信は問題なく実行できました。
可能でしたら、簡単な方法を教えていただければ幸いです。
Client
|----|
| |-----|
|----| | Server
| パイプ |-------|
Client |-=========--| |
|----| | |-------|
| |-----|
|----|
れすつきませんねぇ。
>サーバ側の読み込み(ReadFile())を1ハンドルで複数クライアントからのデータを
>受信したいのですが、可能でしょうか?
「同名の複数のパイプのインスタンス(ハンドル)が作れるのか」
という質問ならば答えは「可能」です。一般にはこのように使います。
また、「一つのハンドルを使用して複数のクライアントのコール
(又はCreateFile)に対応できるのか」については、一般には
「できない」となります。が、同時にアクセスしないのなら、
接続解除(DisconnectNamedPipe)後のハンドルの使いまわしは可能な
ようですね(自分はやったことがないです)。
>>仲澤@失業者さん
返信ありがとうございます。
サーバ側はクライアントを識別する必要がなく、処理結果をカウントするだけで
よかったので、1ハンドルでメッセージを受信できれば楽かと思っていましたが、
無理そうですね。素直にクライアント数だけコネクトする方法でいきたいと思います。
サーバ側がコンソールアプリなので、WM_COPYDATAも使用できないんですよね(;;)
>サーバ側がコンソールアプリなので、WM_COPYDATAも使用できないんですよね(;;)
コンソールアプリでもウインドウを作ればWM_COPYDATAは使えると思いますが・・・