zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    docker node中uid与gid的授权问题
    windows下docker无法进行端口映射的问题
    IOS/Safari下document对象的scrollHeight值比Chrome更大
    Vue/Egg大型项目开发(二)数据库设计
    .babelrc和babel.config.js的相同配置不能合并
    es6 class中责任链模式与AOP结合
    JS设计模式(10)职责链模式(重要)
    Vue/Egg大型项目开发(一)搭建项目
    你不知道的JS(3)来聊聊this
    CentOS7为php7.2安装php-redis扩展(redis环境搭建二)
  • 原文地址:https://www.cnblogs.com/shuqingstudy/p/4726830.html
Copyright © 2011-2022 走看看