java udp 发送小数数字(较难)

代码全部来自:http://825635381.iteye.com/blog/2046882,在这里非常感谢了,我运行测试了下,非常正确,谢谢啊

服务端程序:

package udpServer;

import java.io.*;
import java.net.*;

/** 
 * 服务端 
 * 1、创建服务+端口 
 * 2、准备接受容器  byte数组 
 * 3、把接收容器封装成包 DatagramPacket 
 * 4、接受数据 
 * 5、分析数据 将字节数组转换成--------》各种类型数据 
 * 6、释放资源 
 */   
public class server {  
      
    public static void main(String[] args) throws IOException {  
         //1.创建服务+端口  
        DatagramSocket server = new DatagramSocket(9999);  
        //2.准备接受容器  
        byte[] container = new byte[1024];  
        //3.封装成包   DatagramPacket(byte buf[], int length)  
        DatagramPacket packet = new DatagramPacket(container, container.length);  
        //4.接受数据   (阻塞式接受)  
        server.receive(packet);  
        //5.分析数据  
        double data = convert(packet.getData());  
        System.out.println(data);  
        //6.释放资源  
        server.close();  
          
    }  
      
    public static double convert(byte[] data) throws IOException {  
        DataInputStream dis = new DataInputStream(new ByteArrayInputStream(data));  
        double num = dis.readDouble();  
        dis.close();  
        return num;  
  
    }  
}

客户端程序:

package udpClient;

import java.io.*;
import java.net.*;

/** 
 * 字符串数据类型的通信 
 * 1、创建客户端+端口 
 * 2、准备数据 字节数组 
 * 3、给数据打包 并指定发送的目的地和端口 
 * 4、发送 
 * 5、释放 
 *  
 * 思考 : 发送有类型的数据  怎么处理 如对象  数字 等等 
 * 1、创建客户端+端口 
 * 2、准备数据  把各种类型的数据转成--------》字节数组 *************************************** 
 * 3、给数据打包 并指定发送的目的地和端口 
 * 4、发送 
 * 5、释放 
 */  
public class client {  
    public static void main(String[] args) throws IOException {  
          //1.创建客户端+端口  
        DatagramSocket client = new DatagramSocket(8888);  
        //2.准备要发送的数据 字节数组  
        double d = 123.2345;  
        byte[] data = convert(d);  
        //3.给数据打包 并指定发送的目的地和端口  DatagramPacket(byte buf[], int length, InetAddress address, int port)  
        InetAddress address = InetAddress.getByName("127.0.0.1");  
        DatagramPacket packet = new DatagramPacket(data, data.length, address, 9999);  
        //4.发送  
        client.send(packet);  
        //5.释放  
        client.close();  
    }  
      
    /** 
     * 字节数组  数据源 + Data输出流 
     * @param d 
     * @return 
     * @throws IOException  
     */  
    public static byte[] convert(double d) throws IOException {  
        byte[] data = null;  
          
        //写入数据  
        ByteArrayOutputStream bos = new ByteArrayOutputStream();  
        DataOutputStream dos = new DataOutputStream(bos);  
        dos.writeDouble(d);  
        dos.flush();  
          
        //获取数据  
        data = bos.toByteArray();  
        dos.close();  
        return data;  
 
    }  

}

服务器端控制台显示出客户端发出数字:

123.2345
原文地址:https://www.cnblogs.com/shuqingstudy/p/4726830.html