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

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

客户端关键代码:

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);
}


服务端关键代码:

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 }

...全文
221 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2012-08-16
  • 打赏
  • 举报
回复
差多少,最后发的是什么数据?
qianbbo 2012-08-16
  • 打赏
  • 举报
回复
是否是因为最后一次write还没有结束,你的main程序已经退出了,导致没有传输完成?
youngwolf 2012-08-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

read时不能使用整个buffer的大小MAXSIZE,使用MAXSIZE-1
[/Quote]

为什么?
root_jli 2012-08-16
  • 打赏
  • 举报
回复
read时不能使用整个buffer的大小MAXSIZE,使用MAXSIZE-1
youngwolf 2012-08-16
  • 打赏
  • 举报
回复
每次都可能不一样,不光是最后一次,一样是巧合。
qq120848369 2012-08-15
  • 打赏
  • 举报
回复
TCP字节流,有空自己瞎折腾不如去看看UNIX相关开发书籍系统学习。
shexinwei 2012-08-15
  • 打赏
  • 举报
回复
上面代码贴错了。。。第一段是服务端,第二段是客户端。。。

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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