我有一个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. IOexception发送一个对象到服务器(套接字连接)
- 2. 如何通过套接字发送int C++服务器/ Java客户端
- 3. 通过套接字将Java文件对象发送到服务器
- 4. 无法通过TCP从java套接字发送数据到.net tcp服务器
- 5. Java服务器:套接字发送HTML代码到浏览器
- 6. 如何通过套接字发送列表java
- 7. 套接字,从服务器发送事件到服务器
- 8. 通过套接字发送多个变量从客户端到服务器
- 9. Java通过套接字发送文件
- 10. 通过Java套接字发送文件
- 11. Java - 通过套接字发送证书
- 12. 通过服务器发送BufferedImage到另一个Java客户端
- 13. 从iOS版将数据发送到Java套接字服务器
- 14. Java套接字 - 从客户端发送文件到服务器
- 15. 如何通过java套接字将多个图像从客户端发送到服务器?
- 16. tcp套接字服务器不发送
- 17. Java客户端/服务器通过套接字发送对象问题
- 18. 发送通过套接字的Java TCP服务器对象Android应用
- 19. Arduino客户端通过套接字向Java服务器发送数据
- 20. 如何通过python中的套接字将字符串发送到java服务器?
- 21. 从java服务器发送短信到android客户端usig套接字通过点击一个按钮
- 22. 如何通过套接字发送和接收Java对象?
- 23. 通过套接字发送一个匿名类? (Object.Stream in Java)
- 24. 通过数据报套接字发送一个对象java
- 25. 使用Java发送一个数组通过套接字
- 26. 使用TCP通过套接字从服务器端发送ArrayList到客户端
- 27. 如何通过套接字将数据从c#客户端发送到java服务器?
- 28. Java服务器套接字
- 29. Java套接字编程,服务器不发送消息
- 30. 套接字,java发送文件服务器客户端
“应该是最优的”以什么方式优化?速度?安全?可靠性?你尝试过什么吗?就目前而言,问题太广泛了! – Burkhard
在速度方面 – Shahzaib
根据网络的速度和质量,压缩流可能会有用。再次请添加一些细节! – Burkhard