recv函数 怎么判断接收结束

如题所述

recv函数怎么判断接收结束:
1、例如在数据流中带个结束标识,那样读到结束标识就知道传输完成,停止。 这种方法只能用传输文本文件,有个文件结束符,二进制文件不行。

2、先传个长度,那么接收方就可以控制 接下来要读取多少个字节的数据才算完成。这个适合传输任何文件。

例子:
C/C++ code
client的发函数为:char line[MAXLINE]; while ((fgets(line,MAXLINE,fd)!=NULL) // fd 为一个文件的指针 {send (connfd, line,strlen(line),0) // connfd为 socket}server 的接收函数为:for (;;) {if ((n=recv(connfd, recvline,MAXLINE,0)>0) {recvline[n]=0;fputs(stdout,recvline);else break;}}
当发端停止发送后,收端无法得知数据已经传输完毕,从而一直在for中死循环,可以用以上方法判断接收结束。
温馨提示:答案为网友推荐,仅供参考
相似回答