作者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/m.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