【发布时间】:2012-05-27 05:53:59
【问题描述】:
您好,我编写了一个服务器应用程序,它接受来自客户端的名称,通常是文件名。它打开文件,将内容读入缓冲区,然后使用 send() 在以太网上传输缓冲区。但是问题出现在客户端,所有字节都没有成功接收。我只收到我发送的一部分。
供您参考,这里是服务器端的代码sn-p:
服务器:
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) 循环中,以便客户端继续运行,直到所有字节都已完成收到成功了吗?
【问题讨论】:
-
你用的是什么类型的socket?它是一个UDP套接字吗?如果是这种情况,您应该考虑丢包并重新传输...或者,您可以使用 TCP...
-
这是我正在使用的 tcp 套接字 ...
标签: c linux unix tcp network-programming