gpt4 book ai didi

java - 使用 UDP 单播发送消息后从 String 转换为 Long

转载 作者:行者123 更新时间:2023-11-29 04:20:41 24 4
gpt4 key购买 nike

我正在使用 UDP 单播发送消息,

首先,我有一个 long 变量,我将其转换为字符串,然后进行序列化:

        timeStamp = System.currentTimeMillis(); // Current time in miliseconds
String a=Long.toString(timeStamp);
millisBytes=a.getBytes();
dp=new DatagramPacket(millisBytes,millisBytes.length,ip,3000);
ds.send(dp); // Send the datagram

我在另一个应用程序中记录了这个包,记录的数据是一个字节数组,将其转换为字符串,然后使用 Long.parseLong() (我也尝试了 Long.valueOf()):

        buf=new byte[length];
DatagramPacket dp=new DatagramPacket(buf, length);
ds.receive(dp);
millis = System.currentTimeMillis();
milisInicial=Long.parseLong(new String(dp.getData()));

错误如下:

Exception in thread "main" java.lang.NumberFormatException: For input string: "1521624607119"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Long.parseLong(Long.java:589)
at java.lang.Long.parseLong(Long.java:631)
at com.comunytek.roundTrip.ServidorRoundTrip.main(ServidorRoundTrip.java:38)

1521624607119 是一个数字,所以知道为什么会发生这种情况吗?

最佳答案

Long.parseLong(new String(dp.getData()));

常见问题。您忽略了接收到的数据报的长度。试试这个:

Long.parseLong(new String(dp.getData(),0,dp.getLength()));

关于java - 使用 UDP 单播发送消息后从 String 转换为 Long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49402633/

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