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

看板java作者 (叔叔你人真好)時間18年前 (2008/01/17 21:24), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串5/10 (看更多)
※ 引述《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
文章代碼(AID): #17ZrRtKL (java)
討論串 (同標題文章)
文章代碼(AID): #17ZrRtKL (java)