作者AlexKuo (修身养性中)
看板C_and_CPP
标题[问题] 关於socket read/write repeat的问题
时间Wed Dec 7 13:09:44 2016
我目前用c在弄一个关於socket的开发
目前碰到问题是,在server收到client的资料後,
server要在回圈内write response给 client
while(fgets(buf,sizeof(buf),fp)!=NULL)
{
write(fd,buf,sizeof(buf))
}
照理会把fgets的buf一个一个给client
例如
apple
tea
tree
.
.
.
但实际client就只会收到apple
其他都没法显示
请问是哪里有问题??
附上client收的部分
while(1){
bzero(buffer,256)
read(fd,buffer,255)
printf(buffer is %s\n",buffer)
}
printf只会显示apple
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 113.196.174.254
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1481087387.A.1B0.html
1F:推 Qbsuran: 需要你的前後code 你确定封包有送出去吗 12/07 13:21
2F:推 pili100: 你要不要先撷封包确认资料有照预期进来 12/07 13:22
3F:→ AlexKuo: server while回圈的buf我有印出来,是apple.tea.tree.... 12/07 13:35
4F:→ AlexKuo: 然後client这边有收到第一个apple..後面tea.tre没印出来 12/07 13:36
5F:→ AlexKuo: 看起来只有收apple..不知道问题点.... 12/07 13:36
6F:推 AstralBrain: printf只会印到第一个\0, 确认一下buffer後面还有没 12/07 13:51
7F:→ AstralBrain: 有东西 12/07 13:52
8F:推 dijkstra: 要不印一下read的长度 12/07 14:19
10F:→ AlexKuo: 我的server是用这个,最下面write就是我po文while fgets 12/07 14:35
11F:→ AlexKuo: 那段,这是我加的,其他跟他一模一样 12/07 14:35
12F:→ AlexKuo: 这样while loop write是否能真的成功,虽然我buf是正确, 12/07 14:36
13F:→ AlexKuo: 但write不确定是否成功 12/07 14:36
15F:→ AlexKuo: clinet我用这个,最下面read就是我po文那段,while(1)是 12/07 14:43
16F:→ AlexKuo: 我加的,其他都一样 12/07 14:43
17F:→ AlexKuo: 找到原因了,只要把write的sizeof(buf)改成strlen(buf)就 12/07 17:11
18F:→ AlexKuo: 好了,应该是array过大 12/07 17:11