我正在寫一個小而簡單的服務器(在C語言的Linux站)。發送一個文件在Linux中的C使用套接字
一個客戶端向我的服務器請求一個文件,我的服務器向另一個服務器請求這個文件,將它發送到我的服務器。
我的服務器在發送給客戶端之前不應該接收所有的文件,但必須發送文件的字節,以便他們到達。
這是在學校的練習,所以我不能將自己從這個要求中分離出來。
我已經實現了下面解釋的功能。問題是客戶端收到了不確定的字節數,並且從來沒有收到整個文件。
int Recv_and_send_file (int socketa, int socketb, char *buffer, size_t file_size){
size_t n;
ssize_t nread;
ssize_t nwritten;
char c;
for (n=1; n<file_size; n++)
{
nread=recv(socketa, &c, 1, 0);
if (nread == 1)
{
nwritten = send(socketb,&c,1,0);
}
else if (nread == 0)
{
*buffer = 0;
return (-1); /* Errore */
}
else
return (-1); /* Errore */
}
}
*buffer = 0;
return (n);
}
有人可以告訴我我在哪裏錯了嗎?
更改服務器和客戶端上的值SO_SNDBUF和SO_RCVBUF是否是一個愚蠢的想法?
謝謝您的回答,但它要求我有明確的方式來發送字節每字節 – user2510406