如何在Java套接字编程中从客户端发送和接收整数数组?

时间:2009-03-19 21:18:34

标签: sockets client-server

我在通过套接字连接在两个不同的包中从客户端向服务器发送作业(整数数组)时遇到问题。有什么想法吗?

如果我的问题不够明确,我可以进一步解释。

4 个答案:

答案 0 :(得分:4)

要回答标题中的问题,我会将SocketOutputStream包裹在BufferedOutputStream的{​​{1}}中并重复使用后者的DataOutputStream方法。或者您可以使用writeInt()代替ObjectOutputStream,并序列化数组:DataOutputStream。要在另一端再次阅读,只需将objOutStream.writeObject(theArray)包裹在(1)SocketInputStream中并重复使用DataInputStream,或者(2)readInt()并使用{ {1}}。

(如果您不必与其他语言互操作,ObjectInputStream对您来说更容易)

答案 1 :(得分:2)

你必须把它作为阵列发送吗?它使整个过程复杂化。为什么不将它包装在Collection或某种List中呢?即:

ObjectOutputStream oos = new ObjectOutputStream(...);
oos.writeObject(integerCollection);



ObjectInputStream ois = new ObjectInputStream(...);
Collection integerCollection = (Collection)ois.readObject();

答案 2 :(得分:0)

您使用什么协议通过链接发送此数据? 您可以将数组包装在可以序列化为输出流的对象中。

TCP: 在这种情况下,事情应该非常简单。传输层将负责将对象分段并在链接的另一端进行处理。

UDP: 事情会变得有点复杂;如果您尝试序列化的对象大于UDP缓冲区(以字节为单位),那么您可能无法获取数据。在这种情况下,您可以使用小于默认UDP缓冲区大小的块发送数据。

此致

答案 3 :(得分:-3)

使用

ArrayList a=new ArrayList(n)    //n represents size

List a=new List()

我们可以发送到服务器