Re: [問題] socket傳送數值出錯
※ 引述《andykid (宗一郎)》之銘言:
: 問題已經解決了...> <
: 學長說是因為每次read()都要用一個frame
: 所以做了多次的read()
: 造成有資料遺失...
呃... 不知道這樣說好不好... 你的學長所說的是完全錯誤的...
跟什麼 frame 不 frame 的沒有任何關係,只是單純地 write(int b) 寫進 stream
去的是 character 而不是 int。所以只會把 lower-byte 的資料送出去
higher-bytes 都會 ignore 掉。
重申一次... 跟什麼 frame 或 packet 完全沒有關係,Java API 的 I/O
Stream 是在 Application level,所以是管不了什麼 packet 不 packet 的。
你只要試一試那個使用 Piped I/O 便會知道,那中間沒有什麼 packet 交換等等的
東西,但仍然會跑出 63 來。
: 所以才會變成讀取到的值都變成63
: 所以我改成用String做read write
: 把所有數值接在一起一次輸出一次接收...
: 謝謝大家的回應
我不知道是不是你的程式模組裡,只准許使用這個不太好用的 Writer/Reader...
Writer/Reader 是 character based 的,是用來處理 character 的資料的
處理 character 以外的其他資料都是不適合的。
不是說你的那個解決方法不行,只是不太好
若果傳送與接收都用 DataOutputStream/InputStream 來代替 BufferedWriter/Reader,
則可以更方便地使用 writeInt, readInt 甚至 float 之類的都可以直接寫進去
免卻了將數值轉成 String 又將 String 轉回數值的麻煩。
--
很多人以為 所以我要 其實我是個
我是大學生 告訴大家 三十一歲的怪叔叔
● ●/ ︿ ︿
/勁\ <勁 ●
ㄨ /\ ㄨ
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.102.77.165
※ 編輯: superlubu 來自: 218.102.77.165 (01/17 21:28)
推
01/18 06:56, , 1F
01/18 06:56, 1F
討論串 (同標題文章)