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

看板java作者 (宗一郎)時間18年前 (2008/01/17 17:42), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/10 (看更多)
問題已經解決了...> < 學長說是因為每次read()都要用一個frame 所以做了多次的read() 造成有資料遺失... 所以才會變成讀取到的值都變成63 所以我改成用String做read write 把所有數值接在一起一次輸出一次接收... 謝謝大家的回應 經過這次又學到一招了 ※ 引述《superlubu (叔叔你人真好)》之銘言: : : rbw.write(controla[i+1]); : : gui.border=br.read(); : : → andykid:我的值都可以正常讀入..除了height..每次都是63 01/17 12:56 : 你誤會了 write(int) 和 int read() 的用法,它們是用來寫/讀 character  : 而不是 integer 的,請看以下: : import java.io.*; : public class Test { : public static void main(String[] argv) throws Exception { : PipedOutputStream o = new java.io.PipedOutputStream(); : PipedInputStream i = new java.io.PipedInputStream(o); : BufferedWriter w = new BufferedWriter(new OutputStreamWriter(o)); : w.write(100000); : w.flush(); : o.flush(); : w.close(); : o.close(); : System.out.println("read: " + i.read()); : } : } : 結果出來仍然會是 63, 所有 write(int b) 中, b 值比 127 大的話,就會變成 63 的了 : 註: charset 問題,當 OutputStreamWriter 設成 charset = UTF-8,比 65535 大的數 : 便會當成 0 : 附帶一提,正常來說玩這種 primitive data transfer,java.io.DataInputStream 和 : java.io.DataOutputStream 是好物 -- 簽名檔現在都要放相簿 謎一般的相簿 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 134.208.2.165
文章代碼(AID): #17ZoBh57 (java)
討論串 (同標題文章)
文章代碼(AID): #17ZoBh57 (java)