使用来自C ++的Java套接字接收Float [英] Receive Floats using java sockets from C++

查看:92
本文介绍了使用来自C ++的Java套接字接收Float的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要使用套接字从C ++客户端到Java服务器接收包含浮点数的数组或类.但是InputStreamReader没正确.任何原因. 任何更简单的建议将不胜感激. 谢谢.

I need to receive an array or a class containing floats from a c++ client to java server using sockets. But the InputStreamReader is not getting it right. Any reasons. Any suggestions for simpler ways would be appreciated. Thanks.

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();
        }


    }
}

我将那些浮点数存储在一个名为Values的类中.但是我得到的价值是垃圾.我在发送前检查C ++代码中的值,它们似乎很好.不知道哪里出了问题. 请帮忙... !!

I am storing those float in a Class called Values. But the values I get are junk. I am checking the values in C++ code before sending and they seem fine. Dont know where its going wrong. Please Help...!!

推荐答案

我建议您尝试

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

这篇关于使用来自C ++的Java套接字接收Float的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆