我正在编写一个 UDP 客户端来将文件传输到 UDP 服务器。首先,我尝试测量文件的长度,除以 UDP 数据包中要发送的缓冲区长度,得到需要发送的数据包数。我首先将此号码发送到服务器以确认它。但是在服务器端,从接收数据包的字节数组到初始数字的转换失败了。谁能帮我解决这个问题?这是我在客户端的代码:
DatagramSocket socket=new DatagramSocket();
File f = new File(filename);
long fileSize = f.length();
byte[] buffer = new byte[16384];
long packetNumber = (fileSize/(buffer.length))+1;
DatagramPacket sendPacket=new DatagramPacket(buffer,buffer.length,addr,srvPort);
String str=Long.toString(packetNumber);
buffer = str.getBytes();
socket.send(sendPacket);
这是服务器端的代码:
DatagramSocket socket=new DatagramSocket(port);
byte[] buffer=new byte[16384];
DatagramPacket receivePacket=new DatagramPacket(buffer, buffer.length);
while(true)
{
socket.receive(receivePacket);
if (receivePacket.getData().toString().trim()!=null)
{
String str=receivePacket.getData().toString();
System.out.println(str);
long pcount=Long.parseLong(str);
System.out.println(pcount+" packets to be received.");
break;
}
}
但是在服务器端,变量 pcount 总是无法解析,当我尝试打印 str 时,它会写出一些“[B@60991f”或……,很奇怪。