Java中通过UDP协议发送和接受数据

Java中通过UDP协议发送和接受数据

UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!

UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。正因为UDP协议没有连接的过程,所以它的通信效率高;但也正因为如此,它的可靠性不如TCP协议高。QQ就使用UDP发消息,因此有时会出现收不到消息的情况。

一、UDP协议发送数据

发送处理过程:

  1. 创建发送端Socket对象——DatagramSocket
  2. 创建数据并将数据打包到DatagramPacket对象
  3. 通过Socket发送
  4. 释放相关资源

发送处理代码:










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(); 
        } 
    } 
}

 




二、UDP协议接收数据

接受处理过程:

  1. 创建接受端Socket对象——DatagramSocket
  2. 创建包DatagramPacket对象(数据接收容器)
  3. 调用接受方法接受数据
  4. 解析数据包对象,取出接受到的信息
  5. 释放资源

接受处理代码:










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(); 
       }       
   } 
}

运行:

先运行接收端,让程序监听8081端口,然后运行发送端发送数据到本机(localhost)的8081端口。

之后会发现在接收端的控制台打印出 ‘hello UDP ’的内容。

猜你喜欢

转载自blog.csdn.net/qq_35673617/article/details/80678728
今日推荐