0

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

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

4

4 回答 4

4

要回答您标题中的问题,我会将 a 包装SocketOutputStream在 aBufferedOutputStream中并重复DataOutputStream使用后者的方法。writeInt()或者您可以使用ObjectOutputStream代替DataOutputStream,并序列化数组:objOutStream.writeObject(theArray)。要在另一端再次读取它,只需将SocketInputStreamin (1) a包装DataInputStreamreadInt()重复使用,或 (2) aObjectInputStream并使用readObject()

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

于 2009-03-19T21:29:03.477 回答
2

您必须将其作为数组发送吗?它使整个过程复杂化。为什么不将它包装在一个集合或某种列表中?IE:

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



ObjectInputStream ois = new ObjectInputStream(...);
Collection integerCollection = (Collection)ois.readObject();
于 2009-03-19T21:27:54.540 回答
0

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

TCP:在这种情况下,事情应该很简单。传输层将负责分割您的对象并在链接的另一端正确处理它。

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

问候,

于 2011-06-08T14:39:42.857 回答
-3

使用

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

或者

List a=new List()

我们可以发送到服务器

于 2009-11-28T09:08:26.477 回答