Re: [問題] 網路要如何讀陣列
※ 引述《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
討論串 (同標題文章)
java 近期熱門文章
PTT數位生活區 即時熱門文章