0

windsockを使用してデータを転送するためのクライアントサーバープログラムがありますが、クライアント-チャネル-サーバーのようなものが必要です。このプログラムでは、チャネルがクリネットからリクエストを取得するか、サーバーがそれを処理し、チャネルがビジー状態のときにそのリクエストを保存します。キューに入れます。別のアプリケーションとしてチャネルが必要です。私はこれについて少し考えています:

class ch {

void getdata{
//to recieve data
}

void putdata{
//to send data
}

void queue{
//to store if channel is busy now
} 

private:
void dataaddress;
double datasize;

}

別のアプリケーションまたはdllファイルとして作成することを考えましたが、dllファイルでそれを行う方法がわかりません。ソケットで行う場合は、クライアントやサーバーと同じになります。それで、それを始めるより良い方法またはどこかで始めることができますか?boost:asioやその他のライブラリについては知っていますが、c++の標準ライブラリに何かが必要です。

4

1 に答える 1

2

私があなたを理解しているなら、あなたは次のように接続された3つのプログラムが必要です。

+ -------- + + ----------- + + -------- +
| クライアント| <---> | 「チャンネル」| <---> | サーバー|
+ -------- + + ----------- + + -------- +

「チャネル」プログラムは、サーバーとクライアント間のプロキシとして機能します。

これを機能させるには、サーバーとクライアントの両方として機能する「チャネル」プログラムを作成する必要があります。実際のサーバーではなく、クライアントプログラムがサーバーに接続する方法でサーバーとして機能します。「チャネル」プログラムが新しいクライアント接続を受信すると、それ自体が実サーバーに接続するクライアントとして機能します。

次に、ソケットのペア(クライアント接続とサーバー接続)があるかどうかを追跡する必要があります。これにより、一方のソケットから入力を受け取ったときに、それを処理し、処理したデータをもう一方のソケットに送信します。したがって、クライアントがデータを送信する場合は、「チャネル」プログラムでデータを受信し、必要な処理を行ってから、実サーバーに送信します。そして、その逆も同じです。

于 2012-11-07T06:19:11.230 に答える