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();
}
}