Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java通过tcp发送结构化数据的最简单方法是什么?_Java_Tcp_Network Programming - Fatal编程技术网

使用java通过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上的文档,看看这是否真的有效 否则,您必须

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

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++变量往往是无符号的。