使用java通过tcp发送结构化数据的最简单方法是什么?

Cpt*_*nic 2 java network-programming tcp

我必须连接到现有的C系统,并且tcp数据包看起来像

typedef struct exampleDataPacket{
  int messageType;
  float dataValue;
  char  dataDesc[100];
} 
Run Code Online (Sandbox Code Playgroud)

所以要使用java发送这种数据,我在书中找不到任何东西.发送/接收此类数据的最佳方式是什么?

谢谢,CP

Dan*_*Dan 5

如果您尝试编写的数据与在C端读取的数据兼容,则可以使用DataOutputStream.仔细检查writeFloat和writeChar上的文档,看看它是否真的有效.

否则你将不得不使用raw OutputStream并自己将数据编码为字节.

编辑:只是想添加 - 我最好的猜测是,出于您的目的,由于编码问题,writeFloat将工作但writeChars不会.相反,你必须使用getBytesJava上的方法String来获取C代码所期望的任何单字节字符编码的字节数组,然后将这些字节写入DataOutputStream.