服务端
* 1、创建服务端+端口
* 2、准备接收容器
* 3、封装成包
* 4、接收数据
* 5、分析数据
* 6、释放
* 字节数组 +Data 输入流 (字节数组转成double类型)
客户端
* 1、创建客户端+端口
* 2、准备数据(字节数组)
* 3、打包(发送的地点及端口)
* 4、发送
* 5、释放
* 字节数组 数据源+Data 输出流 (double 类型转成字节数组)
服务端代码
MyServer.java
package udp; import java.io.ByteArrayInputStream; import java.io.DataInputStream; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException; /* * 服务端 * 1、创建服务端+端口 * 2、准备接收容器 * 3、封装成包 * 4、接收数据 * 5、分析数据 * 6、释放 * 字节数组 +Data 输入流 (字节数组转成double类型) */ public class MyServer { public static void main(String[] args) throws IOException { // 1、创建服务端+端口 DatagramSocket server=new DatagramSocket(6666); //2、准备接收容器 byte[] container=new byte[1024]; //3、封装成包 DatagramPacket packet=new DatagramPacket(container,container.length); //4、接收数据 server.receive(packet); //5、分析数据 double data=convert(packet.getData()); // byte [] data=packet.getData(); // int len=packet.getLength(); // System.out.println(new String(data,0,len)); System.out.println(data); //6、释放 server.close(); } /* * 字节数组 +Data 输入流 */ public static double convert(byte[]data) throws IOException { DataInputStream dis=new DataInputStream(new ByteArrayInputStream(data)); double num=dis.readDouble(); //将数据读出来 dis.close(); return num; } }
客户端代码
MyClient.java
package udp; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetSocketAddress; import java.net.SocketException; /* * 客户端 * 1、创建客户端+端口 * 2、准备数据(字节数组) * 3、打包(发送的地点及端口) * 4、发送 * 5、释放 * 字节数组 数据源+Data 输出流 (double 类型转成字节数组) */ public class MyClient { public static void main(String[] args) throws IOException { //1、创建客户端+端口 DatagramSocket client=new DatagramSocket(8811); //2、准备数据 double num=89.12; // String msg="udp编程"; // byte data[]=msg.getBytes(); byte data[]=convert(num); //3、打包(发送的地点及端口) DatagramPacket packet=new DatagramPacket(data,data.length,new InetSocketAddress("localhost",6666)); //4、发送 client.send(packet); //5、释放 client.close(); } /* * 字节数组 数据源+Data 输出流 */ public static byte[] convert(double num) throws IOException { byte[] data=null; ByteArrayOutputStream bos=new ByteArrayOutputStream(); //内存 DataOutputStream dos=new DataOutputStream(bos); //输出流 dos.writeDouble(num); //将数据num写入内存 写进去 dos.flush(); //获取数据 data=bos.toByteArray(); //装换成字节 dos.close(); return data; } }