udp编程

服务端
* 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;
    }
}
原文地址:https://www.cnblogs.com/ssxblog/p/11266096.html