日期:2014-05-16  浏览次数:20513 次

socket程序中read字节个数与write字节个数不同
客户端从文件读取数据发送到服务端。每一次发送和接收数据均一致,但是最后一次发送中,服务端read返回的数据个数与客户端write的数据个数不等。。。

客户端关键代码:
C/C++ code

while((len = read(*pfd,buffer,MAXSIZE)))
188             {
189                 printf("len=%d\n",len);
190                 if(len == -1)
191                 {
192                     printf("read error!!\n");
193                     exit(0);
194                 }
195                     printf("buffer:%s\n",buffer);
196                 write(fd,buffer,len);
}



服务端关键代码:
C/C++ code

367                 while((len = read(fd,buffer,MAXSIZE)))     //send file
368                 {
369                     printf("len = %d\n",len);
370                     printf("buffer:%s\n",buffer);
371                     write(*pPeerfd,(void *)buffer,len);
372                     memset(buffer,'\0',MAXSIZE);
373                     size += len;
374                     if(len < MAXSIZE)
375                         break;
376                 }




------解决方案--------------------
TCP字节流,有空自己瞎折腾不如去看看UNIX相关开发书籍系统学习。