[問題] 關於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