UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非链接的协议,它不与对方创建链接,而是直接就把数据包发送过去!spa
UDP适用于一次只传送少许数据、对可靠性要求不高的应用环境。正由于UDP协议没有链接的过程,因此它的通讯效率高;但也正由于如此,它的可靠性不如TCP协议高。QQ就使用UDP发消息,所以有时会出现收不到消息的状况。对象
发送处理过程:ci
发送处理代码:资源
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
public
class
TestUDPSend { public static void main( String [] args) { String data= "hello UDP" ; DatagramSocket datagramSocket=null; try { //实例化套接字,并指定发送端口 datagramSocket= new DatagramSocket( 8080 ); //指定数据目的地的地址,以及目标端口 InetAddress destination=InetAddress.getByName( "localhost" ); DatagramPacket datagramPacket= new DatagramPacket(data.getBytes(), data.getBytes().length,destination, 8081 ); //发送数据 datagramSocket.send(datagramPacket); } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { datagramSocket.close(); } } } |
接受处理过程:get
接受处理代码:it
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
public
class
TestUDPReceive { public static void main( String [] args) { DatagramSocket datagramSocket=null; try { //监视8081端口的内容 datagramSocket= new DatagramSocket( 8081 ); byte [] buf= new byte [ 1024 ]; //定义接收数据的数据包 DatagramPacket datagramPacket= new DatagramPacket(buf, 0 , buf.length); datagramSocket.receive(datagramPacket); //从接收数据包取出数据 String data= new String (datagramPacket.getData() , 0 ,datagramPacket.getLength()); System.out.println(data); } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { datagramSocket.close(); } } } |
运行:io
先运行接收端,让程序监听8081端口,而后运行发送端发送数据到本机(localhost)的8081端口。table
以后会发如今接收端的控制台打印出 ‘hello UDP ’的内容。class