Re: [問題] socket傳送數值出錯

看板java作者 (叔叔你人真好)時間18年前 (2008/01/18 15:26), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串7/10 (看更多)
※ 引述《Lordaeron (Terry)》之銘言: : but 一件事, socket 從沒規定你送什麼, 對方就要馬上收到什麼. : 要是被buffer 一下, 你write 兩次的, 變成第一次read 就收到了, 就有趣囉 : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 61.229.151.98 : 推 superlubu:呃... 不明白你指的是什麼,可否指教一下呢? 01/18 09:29 : → Lordaeron:寫多了你就知道的了. 特別是不要在intranet 又只有兩台 01/18 11:22 : → Lordaeron:電腦, 試久了你就知了. 01/18 11:26 : 推 superlubu:基本上... 我寫了十年了 ( ′-`)y-~ 01/18 11:52 : → Lordaeron:哪你更應該了解到, send 跟receive 的次數不一定相同的 01/18 14:40 呃... 真的沒有看明白... 為什麼要考慮 receive 的「次數」呢? 只要能 receive 到足夠的 data 不就行了? 你說的「 write 兩次,變成第一次 read 就到了」的意思是... 用兩次 writeInt(),總共送出 8 bytes,但可能這 8 bytes 會一起送到 client 手上 這樣嗎? 不過... 這會做成什麼問題呢?我不明白。因為 client 這一方在 readInt() 的時候 只會讀進 (也必定會讀進) 4 bytes,餘下的東西會繼續放在 InputStream 中待命.... 並不會一次就把 8 bytes 讀進然後 parse 成 integer 罷....... (API claims) 反過來說... 用 writeInt() 寫了一次,4 bytes 可能只會先送頭 2 bytes 但在 client 這邊讀 readInt() 時會強制等待 4 bytes 全讀入才會 return 罷... 要是 connection time out,後 2 bytes 送不到,那就是 EOFException 了.... 或許真的是我的工作經驗還淺? -- 《為了要得到真相,就要向原 PO 伸圖》 那就是伸圖魔人的沒圖沒真相原則,那時我們堅信那就是逼逼死的真實 靠么,圖咧? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 147.8.130.225

01/18 17:27, , 1F
雖然我沒有太多這方面的經驗, 但以我所知的 socket
01/18 17:27, 1F

01/18 17:27, , 2F
programming 模式也是和你一樣的, so次數有何干呢?...
01/18 17:27, 2F
文章代碼(AID): #17a5IS9_ (java)
討論串 (同標題文章)
文章代碼(AID): #17a5IS9_ (java)