【发布时间】:2014-01-11 11:00:30
【问题描述】:
我需要创建一个小的客户端/服务器应用程序,它应该像这样传输数据:
statistic
15.23.63.12
increase
6
所以必须有一个字符串来标识命令的类型,然后应该有一些参数取决于命令类型。此参数是不同的但始终是原始数据类型。很可能是 String、Short、Byte、Integer 等等……
所以有不同原始数据类型的指令集。
我的问题是:这是将套接字的流包装在 DataInput/OutputStreams 中并从中读取/写入的最佳方式吗?还是将消息保存到字节数组中,然后将此字节数组包装在ByteArrayInputStream 中并将ByteArrayInputStream 包装在我可以读取的DataInputStream 中更好?还是应该将字节数组包装在 ByteBuffer 中?
如果我想加密我的消息,我是否必须将它们保存为字节数组,然后解密字节数组,然后将其包装到某种数据读取器中?
【问题讨论】:
-
A ByteArrayInputStream,顾名思义,允许从内存中的字节数组中读取。您将无法使用 ByteArrayInputStream 从服务器或客户端读取任何内容。显然,要通过套接字进行通信,您必须读取/写入套接字流。我建议使用 JSON 将对象序列化为字节,或者直接使用 ObjectOuntputStream 直接发送 Java 对象。
标签: java sockets encoding message