• 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
  • 相关阅读:
    C++格式化输入输出
    算法的时间复杂度和空间复杂度
    C++编程中const和#define的区别
    C#中结构体和类的区别
    SQL之删除触发器
    Windows添加和取消右键管理员权限
    SQL之trigger(触发器)
    SQL VIEW(视图)
    二分查找的实现
    C++中this指针
  • 原文地址:https://www.cnblogs.com/shuqingstudy/p/4726830.html
Copyright © 2020-2023  润新知