作者carlisle (bear)
站内java
标题Re: [问题] 网路要如何读阵列
时间Sun Jun 11 22:43:51 2006
※ 引述《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