【DSP系统】Java UDP通信模拟监听模块 发表于 2018-01-10 | 浏览 次 字数统计: 370 | 阅读时长 ≈ 2 UDP特点 无连接,不可靠,会造成数据丢失 速度快,因为无需进行三次握手 限制数据传输大小64K 发送端发送端模拟ADx发送竞价请求,这里采用从文件中按行读取数据,然后发送给接收端的方式。 public static void main(String[] args) throws Exception { //DatagramSocket类表示用来发送和接收(udp)数据报包的套接字。 DatagramSocket ds = new DatagramSocket(); //获取本机ip地址 String localIp = InetAddress.getLocalHost().getHostAddress(); //读取文件名 String fileName = "D://datasets//ipinyou.contest.dataset//ipinyou.contest.dataset//training2nd//training2nd//conv.20130610.txt"; // read file content from file //StringBuffer sb= new StringBuffer(""); FileReader reader = new FileReader(fileName); BufferedReader br = new BufferedReader(reader); String str = null; while((str = br.readLine()) != null) { //sb.append(str+"/n"); System.out.println(str); //需要发送的数据 //byte[] buf = "Hello Udp".getBytes(); byte[] buf = str.getBytes(); //将数据传送到本地ip,端口为9999 DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName(localIp), 9999); //发送数据报包 ds.send(dp); } br.close(); reader.close(); //关闭资源 ds.close(); System.out.println("Done.");} 接收端public class ListenModule { public static void main(String[] args) throws Exception { //创建udp服务对象,指定接收端口号为9999的报包 DatagramSocket ds = new DatagramSocket(9999); //构造空的数据报包, 用于存储待会接收到的数据报包 byte[] data = new byte[1024]; DatagramPacket dp = new DatagramPacket(data, data.length); while (true){ //接收数据 ds.receive(dp); //显示数据 String ipAddress = dp.getAddress().getHostAddress(); int port = dp.getPort(); String datas = new String(dp.getData(), 0, dp.getLength()); //System.out.println(ipAddress + "::" + datas + "::" + port); System.out.println(datas); } //ds.close(); }} 运行时先运行接收端,后运行发送端