看板 C_and_CPP 關於我們 聯絡資訊
我目前用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://www.ptt.cc/bbs/C_and_CPP/M.1481087387.A.1B0.html
Qbsuran: 需要你的前後code 你確定封包有送出去嗎 12/07 13:21
pili100: 你要不要先擷封包確認資料有照預期進來 12/07 13:22
AlexKuo: server while迴圈的buf我有印出來,是apple.tea.tree.... 12/07 13:35
AlexKuo: 然後client這邊有收到第一個apple..後面tea.tre沒印出來 12/07 13:36
AlexKuo: 看起來只有收apple..不知道問題點.... 12/07 13:36
AstralBrain: printf只會印到第一個\0, 確認一下buffer後面還有沒 12/07 13:51
AstralBrain: 有東西 12/07 13:52
dijkstra: 要不印一下read的長度 12/07 14:19
AlexKuo: 我的server是用這個,最下面write就是我po文while fgets 12/07 14:35
AlexKuo: 那段,這是我加的,其他跟他一模一樣 12/07 14:35
AlexKuo: 這樣while loop write是否能真的成功,雖然我buf是正確, 12/07 14:36
AlexKuo: 但write不確定是否成功 12/07 14:36
AlexKuo: clinet我用這個,最下面read就是我po文那段,while(1)是 12/07 14:43
AlexKuo: 我加的,其他都一樣 12/07 14:43
AlexKuo: 找到原因了,只要把write的sizeof(buf)改成strlen(buf)就 12/07 17:11
AlexKuo: 好了,應該是array過大 12/07 17:11