我正在写一个TCP服务器/客户端程序,并希望将文件从服务器发送到客户端。这是我的代码,无法发送文件。我使用recv()
和send()
发送文件。提前致谢。TCP客户端/服务器发送/接收文件
客户端:
char *location = "/home/kostas/Downloads/download.txt";
FILE *download = fopen(location, "w+");
if(download == NULL)
{
printf("Error\n");
fflush(stdout);
}
int transfer = 0;
memset(buffer, 0, 1024);
while((transfer = recv(connFd, buffer, 1024 , 0) > 0))
{
int write = fwrite(buffer, sizeof(char), transfer, download);
memset(buffer, 0, 1024);
if((transfer == 0) || (transfer != 1024))
{
break;
}
}
memset(buffer, 0, 1024);
if(read(connFd, buffer, sizeof(buffer)) < 0)
{
printf("Read error\n");
fflush(stdout);
}
服务器端:
//i get the filename by read/write
FILE *file = fopen(fileName, "r");
memset(buffer, 0, 1024);
int i = 0;
while((i = fread(buffer, sizeof(char), 1024, file)) < 0)
{
if(send(connFd, buffer, i, 0) < 0)
{
printf("Error\n");
fflush(stdout);
}
memset(buffer, 0, 1024);
}
我不知道我做错了吗?之后,我打算使用posix线程来实现文件传输。
再次检查接收'while'循环,你放错了一些括号。实际上,你在服务器的读取循环中遇到同样的问题。您可能需要检查[此运算符优先级表](http://en.cppreference。COM/W/C /语言/ operator_precedence)。 –
donte告诉我i = fread ... <0.让我检查一下,但我认为这是我的错误。 – KostasRim
我确实改变了它,但它仍然不起作用:/ – KostasRim