使用java通过tcp发送结构化数据的最简单方法是什么?
我必须连接到现有的C系统,tcp数据包看起来像使用java通过tcp发送结构化数据的最简单方法是什么?,java,tcp,network-programming,Java,Tcp,Network Programming,我必须连接到现有的C系统,tcp数据包看起来像 typedef struct exampleDataPacket{ int messageType; float dataValue; char dataDesc[100]; } 因此,要使用java发送此类数据,我在书中找不到任何内容。发送/接收此类数据的最佳方式是什么 谢谢, CP如果您试图写入的数据与C端读取数据的方式兼容,则可以使用。仔细检查writeFloat和writeChar上的文档,看看这是否真的有效 否则,您必须
typedef struct exampleDataPacket{
int messageType;
float dataValue;
char dataDesc[100];
}
因此,要使用java发送此类数据,我在书中找不到任何内容。发送/接收此类数据的最佳方式是什么
谢谢,
CP如果您试图写入的数据与C端读取数据的方式兼容,则可以使用。仔细检查writeFloat和writeChar上的文档,看看这是否真的有效
否则,您必须使用原始OutputStream
,自己将数据编码成字节
编辑:只是想添加-我的最佳猜测是,出于您的目的,
writeFloat
将起作用,但由于编码问题,writeChars
将不起作用。相反,您必须对Java字符串使用getBytes
方法,以C代码所需的任何单字节字符编码获取字节数组,然后将这些字节写入DataOutputStream
记住Java将以网络字节顺序进行处理;很可能是C程序员很懒,并且没有期望(至少在我的经验中是这样),您可能必须补偿他们的错误并进行一些字节交换。我要强调的是“仔细检查文档”。在跨线路移动原语时,很可能会遇到编码和不同字节顺序的问题。不仅如此,Java中的所有内容都是有符号的,而许多C/C++变量往往是无符号的。