Re: [問題] 網路要如何讀陣列

看板java作者 (bear)時間19年前 (2006/06/11 22:31), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串5/6 (看更多)
※ 引述《qrtt1 (隱者)》之銘言: : ※ 引述《carlisle (bear)》之銘言: : : 這個我不會 : : API哪裡可以找到Vector....? : : 還是不會 能否給個範例 : : 查了 LIST 和 ObjectInputStream/ObjectOutputStrem 的api 都找不到相關的地方 : : 麻煩大大了.... : 不管你丟出去的是什麼@"@ : 最終都是stream的型式 : server收到的是binary data : client也是收到binary data : 一般的情況下 : client可以原始得用socket.getOutputStream.write寫資料給socket : server可以原始得用socket.getInputStream.read取得資料 : 所以,binary是傳輸時的型式 : 在你確定的情況下(依某種protocol,例如http),你可以: : write(new String("GET / http:://www.google.com\r\n\r\n").getBytes()) : 或是用其他的IO修飾原始的OutputStream : 例如你例子中用的PrintWriter : 而接收的情形你用了BufferedReader+InputStreamReader去動作 : ==================================================================== : 現在回到你原先的問題。 : 如何送出2個陣列。 : OutputStream提供幾個基本的方法, : write(int i), write(byte[])... : 不管你怎麼修成OutputStream最終成為一串binary data : 不是其中的一個value (int表示) : 就是其中的一堆value (byte[]) 這邊還是不懂 java提供了 write(int i), write(byte[]) 但沒有提供 write(int[]) int不只一個byte 把int[]用 write(byte[])代入應該會產生錯誤吧 難道要用for迴圈 用write(int i)一個一個代入? : 問題來了, : Server收到後,要怎麼決定他收到的int[] 2個各別是多少@@ : 方法1: 送陣列前先送出通知('start int array, length: foo') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 這邊是指 void write(byte[] b, int off, int len) Writes len bytes from the specified byte array starting at offset off to this output stream. 嗎? : 那Server只要接foo這麼多,就是一個陣列了 : 方法2: 使用serialize,把要傳的東西包成一個物件。 : (細節您就自己查一下吧orz) : 不管怎麼樣單方面,把東西傳出去或收下來都容易的。 : 重點在怎麼讓對方收得愉快。 : server與client之間也許有默契,或契約存在。 : 若是硬付予一個正式的名稱,那就是通訊協定。 : btw. 算是最近開始練socket的心得吧XD : ps. 決定轉出了,想法上若不太成熟才有更多人能發現錯誤。 我有一個問題在於 書上範例寫的 c_in = new BufferedReader(new InputStreamReader(System.in)); System.in 是鍵盤輸入的東西 (API InputStream那頁裡面查不到System.in 為什麼還能傳入呢? @_@) API裡面說 InputStreamReader(InputStream in) 可是我int陣列是我程式在運算中所記錄的變數 要怎麼樣把它變成InputStream傳入? 再度有勞各位大大了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.162.55.167
文章代碼(AID): #14Z2b9KG (java)
文章代碼(AID): #14Z2b9KG (java)