我有一个2D动态数组包含整数和字符串,我需要发送到服务器。该阵列包含100,000列。一种可能性是将数组复制到文件中并将其发送到服务器,服务器可以解析它。而另一种可能性是做序列化。我正在做socket编程,我正在寻找的解决方案应该是最佳的。考虑到数组的大小,我不认为将每个元素转换为字节会很好。请你能给我一些提示或指导我如何着手。如何通过套接字发送一个2D阵列到Java服务器
-1
A
回答
0
将数据序列化为字节以通过套接字进行流式传输,或将数据序列化为文件以及发送文件基本上是一回事。如果您序列化到一个文件,您可以使用FTP等已建立的协议,这对于一个刚接触套接字的开发人员来说更容易。
然而,再次意识到它们本质上是同一个问题。将编程对象分解为字节以写入输出流。
编辑:
根据您的字符串的内容,使用zip压缩算法是一个不错的选择。字符串中的重复内容越多,您获得的压缩比就越高。以下仅是一个示例文件格式:
- 要输入的整数数量。 (因为你没有在你的二维数组中给出最大的ROWS,所以我不能说这需要多少字节,我们假定它的8个字节。)
- 所有整数。这将需要3 * NUM_INTS个字节。
- 拉链压缩的字符串,用空格分隔。
我在这里做了很多假设,因为您的问题还没有足够具体,或者您给出的任何答复。
0
0
一个简单的方法是使用一个DataOutputStream
并将它环绕您使用的插座:DataOutputStream dOut = new DataOutputStream(socket.getOuputStream())
。
然后,您可以只建立自己的简单的二进制协议这样的(它是一个一维数组,但它可以很容易地扩展为二维数组工作以及):如果你想优化
//first write the amount of elements in the array
dOut.write(array.length());
//now write every element
for (Object obj : array) {
if (obj instanceof Integer) {
dOut.writeByte(0); //0 = Integer
dOut.writeInt((Integer) obj);
} else
if (obj instanceof String) {
dOut.writeByte(1); //1 = String
dOut.writeUTF((String) obj); //UTF-8 encoded String
}
// ...
}
对于数据大小,则还可以在套接字的OutputStream
和DataOutputStream
之间使用GZIPOutputStream
,如下所示:new DataOutputStream(new GZIPOutputStream(socket.getOutputStream()))
。当然,你必须在服务器端解压它才能工作。
相关问题
- 1. 如何发送位图到Java套接字服务器?
- 2. 如何通过套接字发送int C++服务器/ Java客户端
- 3. IOexception发送一个对象到服务器(套接字连接)
- 4. 通过套接字将Java文件对象发送到服务器
- 5. 无法通过TCP从java套接字发送数据到.net tcp服务器
- 6. Java服务器:套接字发送HTML代码到浏览器
- 7. 通过Python套接字服务器发送HTML
- 8. 如何通过套接字发送列表java
- 9. 套接字,从服务器发送事件到服务器
- 10. 通过套接字发送多个变量从客户端到服务器
- 11. 通过服务器发送BufferedImage到另一个Java客户端
- 12. Java通过套接字发送文件
- 13. Java - 通过套接字发送证书
- 14. 通过Java套接字发送文件
- 15. 发送消息从Java套接字到PHP服务器套接字
- 16. java - 套接字连接,向服务器发送字符串值
- 17. Java套接字从客户端发送数据到服务器
- 18. Java套接字无法将数据发送到服务器
- 19. 从iOS版将数据发送到Java套接字服务器
- 20. Java套接字 - 从客户端发送文件到服务器
- 21. 如何通过java套接字将多个图像从客户端发送到服务器?
- 22. 发送数千行一个接一个到NCAT的套接字服务器?
- 23. 为什么这个套接字数据只发送一次到Java服务器?
- 24. 通过套接字从客户端发送字符串到服务器
- 25. tcp套接字服务器不发送
- 26. 发送通过套接字的Java TCP服务器对象Android应用
- 27. Arduino客户端通过套接字向Java服务器发送数据
- 28. Java客户端/服务器通过套接字发送对象问题
- 29. 如何在客户端启动服务器时通过套接字'C'将消息发送到服务器?
- 30. 如何通过python中的套接字将字符串发送到java服务器?
“应该是最优的”以什么方式优化?速度?安全?可靠性?你尝试过什么吗?就目前而言,问题太广泛了! – Burkhard
在速度方面 – Shahzaib
根据网络的速度和质量,压缩流可能会有用。再次请添加一些细节! – Burkhard