gpt4 book ai didi

java - 使用来自 C++ 的 java 套接字接收 float

转载 作者:行者123 更新时间:2023-11-28 07:26:52 26 4
gpt4 key购买 nike

我需要使用套接字从 C++ 客户端向 Java 服务器接收一个包含 float 的数组或类。但是 InputStreamReader 没有正确处理。任何原因。任何关于更简单方法的建议将不胜感激。谢谢。

Java 服务器代码

public static void main(String[] args) throws IOException {
// TODO code application logic here
Values values=new Values();
gui display=new gui();
display.setVisible(true);
ServerSocket Sock=new ServerSocket(9090);
try{
while(true){
System.out.println("Waiting");
Socket socket=Sock.accept();

System.out.println("Connected..");
InputStream ins=socket.getInputStream();
InputStreamReader insr= new InputStreamReader(ins);
BufferedReader br=new BufferedReader(insr);

byte[]Array=br.readLine().getBytes("UTF-8");
// values.SetValues(Array);


values.tWidth=Array[0];
values.waterLevel=Array[4];
values.camHeight=Array[8];
values.camViewAngleY=Array[12];
values.camViewAngleX=Array[16];
values.distFromCamBank=Array[20];
values.distTwoPoints=Array[24];
values.AvgVelocity=Array[28];
values.crossSecArea=Array[32];
values.Flow=Array[36];
values.camTiltAngle=Array[40];
values.aboveWater=Array[44];
System.out.println(values.tWidth);
System.out.println(values.waterLevel);
display.SetValues(values);
socket.close();
}

}
finally{
Sock.close();
}


}
}

我将这些 float 存储在一个名为 Values 的类中。但是我得到的值是垃圾。我在发送前检查 C++ 代码中的值,它们看起来很好。不知道哪里出了问题。请帮助...!!

最佳答案

我建议你试试

DataInputStream ins = new DataInputStream(socket.getInputStream());
byte[] bytes = new bytes[48];
ins.readFuly(bytes);
ByteBuffer bb = ByteBuffer.wrap(bytes).order(ByteOrder.nativeOrder());

values.tWidth = bb.getFloat();
value.waterLevel = bb.getFloat();
// etc

关于java - 使用来自 C++ 的 java 套接字接收 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18624484/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com