Re: [問題] 網路要如何讀陣列
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 5 之 6 篇):
java 近期熱門文章
PTT數位生活區 即時熱門文章