你的位置:首页 > Java教程

[Java教程]使用UDP进行数据发送的实例一


首先如果TCP学过以后,再看UDP进行数据传输也是大同小异的,只是用到的类不同

UDP进行传输需要DataSocket和Datapacket类,Datapacket叫数据报,每一个数据报不能大于64k,都记录着数据信息,发送端的IP、端口号,

以及要发送到的接收端的IP、端口号。

UDP进行传输是将数据全部打包,然后一起发过去,容易造成数据丢失,但速度较快,比如要下载一个电影,缺失几侦并没有什么影响,但需要快速下载,这个时候可以选择UDP进行传输,所谓各有所长,具体选择那种方式还是要看具体需要。

接下来附加一个UDP进行文字传输,然后接收端打印到控制台上

 1 package com.UDP.java; 2  3 import java.io.IOException; 4 import java.net.DatagramPacket; 5 import java.net.DatagramSocket; 6 import java.net.InetAddress; 7 import org.junit.Test; 8  9 public class TestUDP {10   // 发送端11   @Test12   public void send() {13     DatagramSocket ds = null;14     try {15       ds = new DatagramSocket();16       // 创建一个数据报,每一个数据报不能大于64k,都记录着数据信息,发送端的IP、端口号,以及要发送到17       // 的接收端的IP、端口号。18       byte[] b = "我是发送端".getBytes();19       DatagramPacket pack = new DatagramPacket(b, 0, b.length, 20           InetAddress.getByName("192.168.1.101"), 9090);21       ds.send(pack);22     } catch (IOException e) {23       e.printStackTrace();24     } finally {25       if (ds != null) {26         ds.close();27       }28     }29   }30 31   // 接收端32   @Test33   public void receive() {34     DatagramSocket ds = null;35     try {36       ds = new DatagramSocket(9090);37       byte[] b = new byte[1024];38       DatagramPacket pack = new DatagramPacket(b, 0, b.length);39       ds.receive(pack);40       String str = new String(pack.getData(), 0, pack.getLength());41       System.out.println(str);42     }catch (IOException e) {43       e.printStackTrace();44     }45     finally{46       if(ds != null){47         ds.close();48       }49     }50   }51 }