Java中udp/tcp的发送和接收

Java中udp/tcp的发送和接收

大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说Java中udp/tcp的发送和接收,希望能够帮助大家进步!!!

一、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 ’的内容。

本文来源huayang183,由架构君转载发布,观点不代表Java架构师必看的立场,转载请标明来源出处:https://javajgs.com/archives/18347

发表评论