簡介:在同一主機上測試,同一IP地址,不一樣的端口,使用UDP發收數據java
需求:使用UDP協議向某IP的某端口發送一條數據編程
UdpSend.java網絡
package com.Train; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; //udp傳輸: /**步驟:--- * 一、創建udp socket 接收和發送點 * 二、提供數據,打包 * 三、使用send發送 * 四、關閉資源 * */ public class UdpSend { public static void main(String[] args) throws SocketException, UnknownHostException { /** 一、創建udp socket端點 */ DatagramSocket s = new DatagramSocket(); /** 二、提供數據,封裝打包 ---DatagramPacket(byte[] buf, int length, InetAddress address, int port) */ byte[] bs = "正在使用UDP發送--我是數據! ".getBytes(); DatagramPacket dp = new DatagramPacket(bs, bs.length, InetAddress.getByName("192.168.1.189"), 8070); /** 三、使用send發送 */ try { s.send(dp); } catch (IOException e) { System.out.println("發送失敗: "); e.printStackTrace(); } /** 四、關閉資源 */ s.close(); } }
運行以上Java程序:eclipse
在網絡數據收發工具中獲取到數據:socket
UdpRecv.java工具
package com.Train; import java.net.DatagramPacket; import java.net.DatagramSocket; //udp傳輸: 接收 /**步驟:--- * 一、創建udp socket,設置接收端口 * 二、預先建立數據存放的位置,封裝 * 三、使用receive阻塞式接收 * 四、關閉資源 * */ public class UdpRecv { public static void main(String[] args) throws Exception{ /**一、創建udp socket,設置接收端口*/ DatagramSocket ds = new DatagramSocket(3020); /**二、預先建立數據存放的位置,封裝*/ byte [] bbuf = new byte [1024]; DatagramPacket dp = new DatagramPacket(bbuf,bbuf.length); /**三、使用receive阻塞式接收*/ ds.receive(dp); System.out.println("ip::"+dp.getAddress().getHostAddress()+"\nport::"+dp.getPort()+"\ndata::"+new String(dp.getData())); /**四、關閉資源*/ ds.close(); } }
測試步驟:測試
一、運行UdpRecv.java程序後,觀察console的輸出:無spa
二、使用網絡收發工具,經過UDP協議向3020端口發送數據,點擊send:.net
三、eclipse<console>:code