我在通过套接字连接在两个不同的包中从客户端向服务器发送作业(整数数组)时遇到问题。有什么想法吗?
如果我的问题不够明确,我可以进一步解释。
答案 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()
我们可以发送到服务器