Мне нужно получить массив или класс, содержащий числа с плавающей точкой от клиента 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
Других решений пока нет …