嗨,我写了一个服务器应用程序,它接受通常是文件名的客户端的名称。它打开文件,将内容读入缓冲区,然后使用send()
通过以太网传输缓冲区。但问题出现在所有字节都没有被成功接收的客户端。我只收到我发送的一部分内容。如何使用套接字apis发送和接收字节?
供您参考,下面是服务器端的代码片段:
服务器:
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;
}
请帮我写客户端app.I我目前困惑如何去写它。我是否将recv()
部分放在while(1)
循环中,以便客户端继续运行,直到所有字节都已成功接收为止?
你用什么样的插座?它是一个UDP套接字?如果是这种情况,你应该迎合丢包和转发...或者,你可以去TCP ... – user1055604
这是我使用的TCP套接字... – phoenix