これは教育目的(大学の割り当て)です。
Linux用のCでクライアントサーバープログラムを作成する必要があります。(私はすでにその部分を持っています。クライアントはサーバーに接続し、問題なくファイルを送受信します...)。
クライアントがサーバーに接続すると、クライアント上のファイルのリストがサーバーに送信されます。したがって、サーバーには、クライアント上のすべてのファイルのリストがあります。
クライアントAはサーバーにファイル「test.txt」を要求できます。サーバーはファイルがクライアントBにあることを認識しており、ファイルをBからAに転送する必要があります。私は最善の方法を考えています。これ。
- Bからバッファに受信し、すぐにバッファをAに送信しますか?
- Bからのファイル全体をrecv()してサーバーに保存し、Aに送信しますか?
私のプログラムはこの動作をサポートする必要があります。AがBにファイルを要求し、次にCがBにファイルを要求した場合、Cは転送A<->Bが終了するまで待機しないでください。そして、これは私が立ち往生しているところです。
どうもありがとうございます!!
編集:私のサーバーはスレッドを使用しています:新しいクライアントが接続しているときはいつでも、それを提供するために新しいスレッドが開かれます。私のクライアントは、現時点ではスレッドを使用していません(これは変更できます)。