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

时间:2010-01-21 16:36:38

标签: java tcp network-programming

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

typedef struct exampleDataPacket{
  int messageType;
  float dataValue;
  char  dataDesc[100];
} 

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

谢谢, CP

2 个答案:

答案 0 :(得分:5)

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

否则,您将不得不使用原始OutputStream并自行将数据编码为字节。

编辑:只是想添加 - 我最好的猜测是,出于您的目的,writeFloat会起作用,但writeChars不会,因为编码问题。相反,您必须在Java getBytes上使用String方法来获取C代码所期望的任何单字节字符编码的字节数组,然后将这些字节写入{{1 }}

答案 1 :(得分:1)

请记住,Java将以网络字节顺序排列;可能是C程序员很懒,并没有期待(至少根据我的经验)你可能不得不弥补他们的错误并进行一些字节交换。