作者qrtt1 (隐者)
看板java
标题Re: [问题] 网路要如何读阵列
时间Sun Jun 11 21:20:14 2006
※ 引述《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