[問題] 關於socket read/write repeat的問題

看板C_and_CPP作者 (修身養性中)時間8年前 (2016/12/07 05:09), 編輯推噓4(4014)
留言18則, 5人參與, 最新討論串1/1
我目前用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

12/07 13:21, , 1F
需要你的前後code 你確定封包有送出去嗎
12/07 13:21, 1F

12/07 13:22, , 2F
你要不要先擷封包確認資料有照預期進來
12/07 13:22, 2F

12/07 13:35, , 3F
server while迴圈的buf我有印出來,是apple.tea.tree....
12/07 13:35, 3F

12/07 13:36, , 4F
然後client這邊有收到第一個apple..後面tea.tre沒印出來
12/07 13:36, 4F

12/07 13:36, , 5F
看起來只有收apple..不知道問題點....
12/07 13:36, 5F

12/07 13:51, , 6F
printf只會印到第一個\0, 確認一下buffer後面還有沒
12/07 13:51, 6F

12/07 13:52, , 7F
有東西
12/07 13:52, 7F

12/07 14:19, , 8F
要不印一下read的長度
12/07 14:19, 8F


12/07 14:35, , 10F
我的server是用這個,最下面write就是我po文while fgets
12/07 14:35, 10F

12/07 14:35, , 11F
那段,這是我加的,其他跟他一模一樣
12/07 14:35, 11F

12/07 14:36, , 12F
這樣while loop write是否能真的成功,雖然我buf是正確,
12/07 14:36, 12F

12/07 14:36, , 13F
但write不確定是否成功
12/07 14:36, 13F

12/07 14:42, , 14F

12/07 14:43, , 15F
clinet我用這個,最下面read就是我po文那段,while(1)是
12/07 14:43, 15F

12/07 14:43, , 16F
我加的,其他都一樣
12/07 14:43, 16F

12/07 17:11, , 17F
找到原因了,只要把write的sizeof(buf)改成strlen(buf)就
12/07 17:11, 17F

12/07 17:11, , 18F
好了,應該是array過大
12/07 17:11, 18F
文章代碼(AID): #1OHvcR6m (C_and_CPP)