Java/Android-在TCP/IP套接字编程中如何使用ObjectOutputStream写入大尺寸的List对象

标签 java sockets arraylist objectinputstream objectoutputstream

我最近在 TCP/IP 套接字编程中使用 ObjectOutputStream 编写对象。

如果我要写大尺寸的List<Object>/ArrayList<Object>通过套接字

(例如list.size: 100,总字节数可能大于负载大小),

我应该打电话writeObject(List<Object>/ArrayList<Object>)吗? ?

可以吗,还是出现任何异常?

在发送数据包之前,ObjectOutputStream 是否会自动将列表分成几段?还是不支持?

还有其他方法可以发送大尺寸的对象吗?

至于ObjectInputStream,我可以直接调用readObject()吗?领取大号List<Object>/ArrayList<Object>

提前致谢。

->

另一个问题:当发送者未完全发送列表时,ObjectInputStream 是否会收到任何内容? 我想关闭套接字,但 ObjectOutputStream 仍在发送列表。当我关闭套接字时它是否立即关闭,并且列表段被销毁?

最佳答案

Is that OK, or any Exception occurs? It's ok.

Does ObjectOutputStream automatically split the list to a few segments

是的。

before sending the packets? Or it doesn't support?

底层套接字无法控制数据包的发送方式。您也不应该需要它。

Is there another way to send a large size of an object?

很多,但 100 个并不是很大。如果您有几百万个大型物体,那可能是值得的。如果你有几十亿,你绝对需要考虑替代方案。有很多选择,但除非您需要,否则我不会打扰。

As for ObjectInputStream, can I just call readObject() to receive the large size of List/ArrayList?

是的,这就是它的用途。

关于Java/Android-在TCP/IP套接字编程中如何使用ObjectOutputStream写入大尺寸的List对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34213012/

相关文章:

c# - 发送到 Java 套接字时 .Net 套接字阻塞

http - 持久化 HTTP 客户端能否一次发送多个请求?

java - java 二维数组列表的最大值

java - 循环遍历值

java - Future.cancel(true) 是否从队列中删除任务?

java - 如何确定另一端是否关闭了 TCP 套接字? (如何读取ack信号)

android - "Permission denied"连接到页面时,即使具有 INTERNET 权限

java - 如何从字符串数组或数组列表创建一个字符串?

java - ArrayList源码中容量检查IF条件有什么用

java - 如何使用 Jersey 2.0 发布表单