JAVA中UDP 接受与发送数据

UDP是一种高速,无连接的数据交换方式,他的特点是,即使没有连接到(也不许要连接)接收方也可以封包发送,就像在一个多人使用的步话机环境中,你不知道你的信息是否被需要的人接受到,但是你的信息确实被传递然后消失了,有时候速度比数据完整性重要,在比如视频会议中,丢失几帧画面是可以接受的。但在需要数据安全接受的环境就不适用了。

发送步骤:

  • 使用 DatagramSocket(int port) 建立socket(套间字)服务。
  • 将数据打包到DatagramPacket中去
  • 通过socket服务发送 (send()方法)
  • 关闭资源
  1. import java.io.IOException;  
  2. import java.net.*;  
  3.   
  4. public class Send {  
  5.   
  6.     public static void main(String[] args)  {  
  7.           
  8.         DatagramSocket ds = null;  //建立套间字udpsocket服务  
  9.           
  10.         try {  
  11.           ds = new DatagramSocket(8999);  //实例化套间字,指定自己的port  
  12.         } catch (SocketException e) {  
  13.             System.out.println("Cannot open port!");  
  14.             System.exit(1);   
  15.         }  
  16.           
  17.         byte[] buf= "Hello, I am sender!".getBytes();  //数据  
  18.         InetAddress destination = null ;  
  19.         try {  
  20.             destination = InetAddress.getByName("192.168.1.5");  //需要发送的地址  
  21.         } catch (UnknownHostException e) {  
  22.             System.out.println("Cannot open findhost!");  
  23.             System.exit(1);   
  24.         }  
  25.         DatagramPacket dp =   
  26.                 new DatagramPacket(buf, buf.length, destination , 10000);    
  27.         //打包到DatagramPacket类型中(DatagramSocket的send()方法接受此类,注意10000是接受地址的端口,不同于自己的端口!)  
  28.           
  29.         try {  
  30.             ds.send(dp);  //发送数据  
  31.         } catch (IOException e) {  
  32.         }  
  33.         ds.close();  
  34.     }  
  35. }  



接收步骤:
  • 使用 DatagramSocket(int port) 建立socket(套间字)服务。(我们注意到此服务即可以接收,又可以发送),port指定监视接受端口。
  • 定义一个数据包(DatagramPacket),储存接收到的数据,使用其中的方法提取传送的内容
  • 通过DatagramSocket 的receive方法将接受到的数据存入上面定义的包中
  • 使用DatagramPacket的方法,提取数据。
  • 关闭资源。
  1. import java.net.*;  
  2.   
  3. public class Rec {  
  4.   
  5.     public static void main(String[] args) throws Exception {  
  6.           
  7.         DatagramSocket ds = new DatagramSocket(10000);  //定义服务,监视端口上面的发送端口,注意不是send本身端口  
  8.           
  9.         byte[] buf = new byte[1024];//接受内容的大小,注意不要溢出  
  10.           
  11.         DatagramPacket dp = new DatagramPacket(buf,0,buf.length);//定义一个接收的包  
  12.           
  13.         ds.receive(dp);//将接受内容封装到包中  
  14.           
  15.         String data = new String(dp.getData(), 0, dp.getLength());//利用getData()方法取出内容  
  16.           
  17.         System.out.println(data);//打印内容  
  18.           
  19.         ds.close();//关闭资源     
  20.     }  


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值