我正在编写一个小而简单的服务器(用于 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 的值是不是很傻?