首页 > 代码库 > java学习笔记 UDP协议

java学习笔记 UDP协议

TCP的所有操作都建立在可靠的链接

UDP(数据报协议)发送的消息对方并不一定会接收到,所有的信息都是以数据报的形式发出

使用DatagramSocket类和DatagramPacket类完成操作

服务端UDP:

import java.net.*;import java.io.*;//定义服务端接收信息public class TestUdpServer {    public static void main(String[] args) {        try {            DatagramSocket ds = new DatagramSocket(9000);//设定监听端口号            byte bytes[] = new byte[1024];//1KB            DatagramPacket dp = new DatagramPacket(bytes,bytes.length);//DatagramPacket(byte[] buf, int length)构造方法            //设定循环接收            String str = null;            while (true) {                ds.receive(dp);//阻塞式方法,一直到接收到数据才解锁                System.out.println("接收数据 : ");                str = new String(bytes,0,dp.getLength());    //注意receive之后,dp填充的是bytes数组                System.out.println(str + ": "+ dp.getAddress().getHostName() + "-----" + dp.getSocketAddress());            }        }catch(SocketException e1) {            e1.printStackTrace();            }catch(IOException e2) {            e2.printStackTrace();            }    }    }

客户端UDP:

import java.net.*;import java.io.*;//定义客户端发送信息public class TestUdpClient {    public static void main(String[] args) {        try {            DatagramSocket ds = new DatagramSocket(8888);//设定监听端口            String str = "Hello Word!";            byte bytes[] = str.getBytes();            //DatagramPacket(byte[] buf, int offset, int length, SocketAddress address)            //InetSocketAddress(InetAddress addr, int port)            DatagramPacket dp = new DatagramPacket(bytes,0,bytes.length,new InetSocketAddress("192.168.0.121",9000));            ds.send(dp);            ds.close();        }catch(SocketException e) {            e.printStackTrace();            }catch(IOException e2) {            e2.printStackTrace();            }    }    }

结果:

技术分享

java学习笔记 UDP协议