关于UDP协议
UDP协议的特点。
1.UDP是一个无连接协议,传输数据之前接收端和发送端之间不建立连接。
想传输数据的时候就抓取数据扔出去,不监控是否被正确和全面的接受到。
2.因为不需要建立连接,也就不需要维护连接状态,会因此一台发送机器可以向多台接收机器传输相同的信息,只需要管理IP和接口。
3.UDP具有较好的实时性,效率高。原因在于UDP在传输数据的时候不建立逻辑连接,也不想TCP那样对数据进行检查。
UDP的使用场景
网络游戏,视频聊天和语音聊天类对实时性要求比较强的应用软件。
例如:在聊天的过程中如果出现丢包现象的话,充其量觉得有些卡顿,一般情况下要求对方从复一遍既可,不影响聊天的整体效果。
并且网络状况较好的时候,这种情况很少发生。
public class Client_Udp { public static void main(String[] args) throws Exception { System.out.println("数据准备发送中"); //1、使用DatagramScoket 指定端口 创建发送端 DatagramSocket dgs =new DatagramSocket(8888); //2、准备数据一定转成字节数组 String data="数据传输成功"; byte[] datas=data.getBytes(); //3、封装成DatagraPacket包裹,需要指定目的地 DatagramPacket dgp =new DatagramPacket(datas, 0, datas.length, new InetSocketAddress("localhost",9999)); //4、发送包裹Send() dgs.send(dgp); dgs.close(); }
public class Server_Udp { public static void main(String[] args) throws Exception { System.out.println("数据接收中!"); //1.使用DatagramSocket创建端口,指定接收端。 DatagramSocket dgs=new DatagramSocket(9999); //2.准备容器封装成DatagramPacket包裹 byte[] container =new byte[1024*60]; DatagramPacket dgp =new DatagramPacket(container, 0,container.length); //3.阻塞式接受包裹receive dgs.receive(dgp); //4.分析数据 byte[] data=dgp.getData(); String st=new String(data,0,data.length); System.out.println(st); dgs.close();