import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
import com.sun.org.apache.bcel.internal.generic.NEW;
/*
* server端
*/
public class UDPServer {
public static void main(String[] args) throws IOException{
// 创建server端+端口
DatagramSocket server = new DatagramSocket(8888);
// 创建接收容器(字节数组),将容器装换成DatagramPacket
byte[] container = new byte[6];
DatagramPacket packet = new DatagramPacket(container, container.length);
// server端接收DatagramPacket包
server.receive(packet);
// 得到包里的数据
byte[] data = packet.getData();
UDPServer uServer = new UDPServer();
System.out.println(uServer.getDataDouble(data));
// 释放资源
server.close();
}
public String getDataString(byte[] data){
String convertString = new String(data,0,data.length);
return convertString;
}
public double getDataDouble(byte[] data) throws IOException{
// byte[] --> byte[]输入流 --> data输入流 --> double
ByteArrayInputStream bArrayInputStream = new ByteArrayInputStream(data);
DataInputStream dInputStream = new DataInputStream(bArrayInputStream);
double convertData = dInputStream.readDouble();
dInputStream.close();
return convertData;
}
}
出现:Exception in thread "main" java.io.EOFException
at java.io.DataInputStream.readFully(Unknown Source)
at java.io.DataInputStream.readLong(Unknown Source)
at java.io.DataInputStream.readDouble(Unknown Source)
at learn.lesson8.Socket.UDP.UDPServer.getDataDouble(UDPServer.java:43)
at learn.lesson8.Socket.UDP.UDPServer.main(UDPServer.java:28)
原因:创建接收容器(字节数组)byte[] container = new byte[6]时数组的长度不够,将6改为1024就没有异常了