Re: [問題] socket傳送數值出錯
※ 引述《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
01/18 17:27, 1F
→
01/18 17:27, , 2F
01/18 17:27, 2F
討論串 (同標題文章)