[问题] 关于socket read/write repeat的问题

楼主: AlexKuo (修身养性中)   2016-12-07 13:09:44
我目前用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
作者: Qbsuran (Qbsuran)   2016-12-07 13:21:00
需要你的前后code 你确定封包有送出去吗
作者: pili100 (zelda)   2016-12-07 13:22:00
你要不要先撷封包确认资料有照预期进来
楼主: AlexKuo (修身养性中)   2016-12-07 13:35:00
server while循环的buf我有印出来,是apple.tea.tree....然后client这边有收到第一个apple..后面tea.tre没印出来看起来只有收apple..不知道问题点....
作者: AstralBrain   2016-12-07 13:51:00
printf只会印到第一个\0, 确认一下buffer后面还有没有东西
作者: dijkstra (邪恶数学家)   2016-12-07 14:19:00
要不印一下read的长度
楼主: AlexKuo (修身养性中)   2016-12-07 14:33:00
http://www.linuxhowtos.org/data/6/server.c我的server是用这个,最下面write就是我po文while fgets那段,这是我加的,其他跟他一模一样这样while loop write是否能真的成功,虽然我buf是正确,但write不确定是否成功http://www.linuxhowtos.org/data/6/client.cclinet我用这个,最下面read就是我po文那段,while(1)是我加的,其他都一样找到原因了,只要把write的sizeof(buf)改成strlen(buf)就好了,应该是array过大

Links booklink

Contact Us: admin [ a t ] ucptt.com