首页 > 代码库 > 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协议
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。