我需要使用套接字从C ++客户端到Java服务器接收包含浮点数的数组或类。但是InputStreamReader没正确。任何原因。任何更简单的建议将不胜感激。谢谢。
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(); } } }
我将那些浮点数存储在名为“值”的类中。但是我得到的价值是垃圾。我在发送前检查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