java学习笔记 UDP协议
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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协议的主要内容,如果未能解决你的问题,请参考以下文章