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中死循環,可以用以上方法判斷接收結束。