socket程序中read字节个数与write字节个数不同

shexinwei 2012-08-15 05:49:52
客户端从文件读取数据发送到服务端。每一次发送和接收数据均一致,但是最后一次发送中,服务端read返回的数据个数与客户端write的数据个数不等。。。

客户端代码:

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 }


服务端代码:

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);
}
...全文
139 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
taodm 2012-08-15
  • 打赏
  • 举报
回复
等赵老师来解释吧。
qq120848369 2012-08-15
  • 打赏
  • 举报
回复
TCP字节流,自己制定通信协议拆包。
xuexingyang 2012-08-15
  • 打赏
  • 举报
回复
所以还是约定好发送结束标志,否则不好说了。
Gonefar 2012-08-15
  • 打赏
  • 举报
回复
是相差多少呢?把最后一次read和write的内容打印出来看一下,也许可以看出些端倪。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧