嗨,我编写了一个服务器应用程序,它接受来自客户端的名称,通常是文件名。它打开文件,将内容读入缓冲区,然后使用以太网通过以太网传输缓冲区send()
。但问题出现在客户端没有成功接收所有字节的地方。我只收到我发送的一部分。
供您参考,这是服务器端的代码片段:
服务器:
fp = fopen(filename,"r+");
strcpy(str,"");
fseek(fp, 0L, SEEK_END);
size = ftell(fp);
fseek(fp, 0L, SEEK_SET);
fread(str, size, 1,fp);
fclose(fp);
printf("Size of the file is : %d\n",size);
sprintf(filename, "%d", size);
n = send(nsd, filename, strlen(filename), 0);
while(size > 0){
n = send(nsd, str, strlen(str), 0);
printf("%d bytes sent successfully\n",n);
if(n == 0) break;
sentbytes = sentbytes + n;
size = size - sentbytes;
}
请帮助我编写客户端应用程序。我目前对如何编写它感到困惑。我应该将recv()
部分放在一个while(1)
循环中,以便客户端继续运行,直到成功接收到所有字节?