通过UDP数据包将double从matlab发送到java
我正在尝试将Double从Matlab(Simulink)发送到java。 这是我的代码:通过UDP数据包将double从matlab发送到java,java,matlab,udp,simulink,Java,Matlab,Udp,Simulink,我正在尝试将Double从Matlab(Simulink)发送到java。 这是我的代码: public static void main(String[] args) throws SocketException, UnknownHostException, IOException { DatagramSocket socket = new DatagramSocket(25000); byte[] buf = new byte[512]; DatagramPacket packet =
public static void main(String[] args) throws SocketException, UnknownHostException, IOException {
DatagramSocket socket = new DatagramSocket(25000);
byte[] buf = new byte[512];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
while (true) {
socket.receive(packet);
String msg = new String(buf, 0, packet.getLength());
Double x = ByteBuffer.wrap(buf).getDouble();
System.out.println(x);
packet.setLength(buf.length);
}
}
我得到了一些值,但它们真的没有意义…很可能您发送的是
double
s作为little endian,但ByteBuffer假设“网络顺序”是big endian
试一试
注意:UCP是有损的,因此某些数据包将丢失。您选择UDP数据报级别的任何特定原因。
DatagramSocket socket = new DatagramSocket(25000);
byte[] buf = new byte[512];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
DoubleBuffer db = ByteBuffer.wrap(buf).order(ByteOrder.LITTLE_ENDIAN).asDoubleBuffer();
while (true) {
socket.receive(packet);
db.limit(packet.getLength() / Double.BYTES);
double x = db.get(0);
System.out.println(x);
}