我必须连接到现有的C系统,并且tcp数据包看起来像
typedef struct exampleDataPacket{
int messageType;
float dataValue;
char dataDesc[100];
}
所以要使用java发送这种数据,我在书中找不到任何东西。发送/接收此类数据的最佳方式是什么?
谢谢, CP
答案 0 :(得分:5)
如果您尝试编写的数据与在C端读取的数据兼容,则可以使用DataOutputStream。仔细检查writeFloat和writeChar上的文档,看看它是否真的有效。
否则,您将不得不使用原始OutputStream
并自行将数据编码为字节。
编辑:只是想添加 - 我最好的猜测是,出于您的目的,writeFloat
会起作用,但writeChars
不会,因为编码问题。相反,您必须在Java getBytes
上使用String
方法来获取C代码所期望的任何单字节字符编码的字节数组,然后将这些字节写入{{1 }}
答案 1 :(得分:1)
请记住,Java将以网络字节顺序排列;可能是C程序员很懒,并没有期待(至少根据我的经验)你可能不得不弥补他们的错误并进行一些字节交换。