网络编程——UDP编程

UDP:以数据为中心 非面向连接 不安全 数据可能丢失 但效率高

1.类DatagramSocket,DatagramPacket
客户端:
1)创建客户端 DatagramSocket 类+指定端口
2)准备数据 字节数组
3)打包
4)发送
5)释放资源

客户端编程:
/**
 * 客户端
 * 1、创建客户端 +端口
 * 2、准备数据
 * 3、打包(发送的地点 及端口)
 * 4、发送
 * 5、释放
 * 
 * 思考: 89.12  数据+类型
 * @author Administrator
 *
 */
public class MyClient {

    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        //1、创建客户端 +端口
        DatagramSocket client = new DatagramSocket(6666);
        //2、准备数据
        String msg ="udp编程";
        byte[] data =msg.getBytes();
        //3、打包(发送的地点 及端口)DatagramPacket(byte[] buf, int length, InetAddress address, int port)
        DatagramPacket packet = new DatagramPacket(data,data.length,new InetSocketAddress("localhost",8888));
        //4、发送
        client.send(packet);
        //5、释放
        client.close(); 
    }
}

服务器端:
1)创建服务端 DatagramSocket 类 +指定端口
2)准备接受容器 字节数组
3)包 接收数组
4)分析
5)释放资源

服务器端编程:

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
/**
 * 服务端
 * 1、创建服务端 +端口
 * 2、准备接受容器
 * 3、封装成 包
 * 4、接受数据
 * 5、分析数据  
 * 6、释放
 * @author Administrator
 *
 */
public class MyServer {
    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        //1、创建服务端 +端口
        DatagramSocket server = new DatagramSocket(8888);
        //2、准备接受容器
        byte[] container = new byte[1024];
        //3、封装成 包 DatagramPacket(byte[] buf, int length)        
        DatagramPacket packet =new DatagramPacket(container, container.length) ;
        //4、接受数据
        server.receive(packet);
        //5、分析数据
        byte[] data =packet.getData();
        int len =packet.getLength();
        System.out.println(new String(data,0,len));
        //6、释放
        server.close();
    }

}

你可能感兴趣的:(网络编程——UDP编程)