クライアントから要求されたファイルを取得するために別のサーバーに接続するサーバーがあります。
リクエストプロセスは次のとおりです。
Client ----> Server A ----> Server B
ファイルを送信するプロセス:
Server B ---> server A ----> client
クライアントをサーバー B に直接接続できません。
次のことが必要です。
サーバー A は、他のサーバーに到着したファイル データをクライアントに転送する必要があります (ファイル全体の受信を待たずに)。したがって、バイト単位で到着します。
その他の情報:
TCP socket;
Programming in C on Linux.
誰かがこれを実装するためのアイデアを親切に教えてくれますか?
アップデート
これが私の最初の試みです:
/* This code is refered to SERVER A */
/* s is the file descriptor for comunicate with SERVER B */
/* t is the file descriptor for comunicate with CLIENT */
int forward (int s, int t, char *buffer, size_t bytes){
size_t n;
ssize_t nread;
ssize_t nsend;
char c;
for (n=1; n<bytes; n++)
{
nread=recv(s, &c, 1, 0);
if (nread == 1)
{
nsend = send(t,c,1,0);
if (nsend<=0) {
return (-1);
}
}
else if (nread == 0)
{
return (n-1); /* Errore */
}
else
return (-1); /* Errore */
}
return (n);
}