我有一臺服務器聯繫另一臺服務器,用於檢索客戶端請求的文件。字節到與TCP套接字發送的字節
請求過程是:
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);
}
首先試一下,這不是一個好問題。您需要使用多線程/處理C程序來爲更多的客戶端提供服務,並同時在服務器A上偵聽並下載/上傳。在服務器B上,您需要偵聽來自服務器A的請求,然後發送數據B。馬上重傳數據。如果你需要更多的定製,使用UDP,而不是TCP。 – bartimar
但是,您可以在B上安裝B磁盤並讓samba來處理這個問題嗎? – bartimar
您正在描述一個[netcat](http://en.wikipedia.org/wiki/Netcat)管道 –