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

看板java作者 (隱者)時間19年前 (2006/06/11 21:02), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/6 (看更多)
※ 引述《carlisle (bear)》之銘言: : ※ 引述《BadKido (BadKido)》之銘言: : : =站內儲存 請不要回出去摟= : : 我想方法應該很多 每個人想到的都不一樣 : : 我提供自己的直覺想法 希望對你有幫助 : : 把兩個int[]丟進LIST中(什麼樣的LIST 就看你要怎麼用他 找效率最佳的) : 這個我不會 : : 或是Vector也行 總之看你需要的功能選擇你要的容器 : API哪裡可以找到Vector....? : : 再利用ObjectInputStream/ObjectOutputStrem : : 傳送和接收LIST : : 想看仔細一點的話 : : 可以參考java.util.*和java.io.*兩部份的api document喔~ : 還是不會 能否給個範例 : 查了 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[]) 問題來了, Server收到後,要怎麼決定他收到的int[] 2個各別是多少@@ 方法1: 送陣列前先送出通知('start int array, length: foo') 那Server只要接foo這麼多,就是一個陣列了 方法2: 使用serialize,把要傳的東西包成一個物件。 (細節您就自己查一下吧orz) 不管怎麼樣單方面,把東西傳出去或收下來都容易的。 重點在怎麼讓對方收得愉快。 server與client之間也許有默契,或契約存在。 若是硬付予一個正式的名稱,那就是通訊協定。 btw. 算是最近開始練socket的心得吧XD ps. 決定轉出了,想法上若不太成熟才有更多人能發現錯誤。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.26.34.105
文章代碼(AID): #14Z1HuQR (java)
文章代碼(AID): #14Z1HuQR (java)