UDP發送端 獲取DatagramSocket對象,new出來 獲取DatagramPacket對象,new出來,構造參數:byte[]數組,int長度,InetAddress對象,int埠 調用DatagramSocket對象的send()方法,發送出去,參數:DatagramPacket對象 ...
UDP發送端
獲取DatagramSocket對象,new出來
獲取DatagramPacket對象,new出來,構造參數:byte[]數組,int長度,InetAddress對象,int埠
調用DatagramSocket對象的send()方法,發送出去,參數:DatagramPacket對象
調用DatagramSocket對象的close()方法,關閉資源
import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; /** * 發送端 * @author taoshihan * */ public class Sender { public static void main(String[] args) throws Exception { DatagramSocket ds=new DatagramSocket(); byte[] buf="Hello UDP".getBytes(); DatagramPacket p=new DatagramPacket(buf, buf.length, InetAddress.getLocalHost(),10000); ds.send(p); ds.close(); } }
UDP接收端
獲取DatagramSocket對象,new出來,構造參數:int埠號
獲取DatagramPacket對象,new出來,構造參數:byte[]數組,int長度
調用DatagramSocket對象的receive()方法,接收數據,參數:DatagramPacket對象
調用DatagramPacket對象的getAddress()方法,獲取到InetAdress對象
調用DatagramPacket對象的getData()方法,獲取到byte[]位元組數組,接收的數據
調用DatagramPacket對象的getLength()方法,獲取到數據長度
通過new String()包一下,獲得String數據,參數:byte[]數組,0開始,length長度
import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; /** * 接收端 * @author taoshihan * */ public class Receiver { public static void main(String[] args) throws Exception { DatagramSocket ds=new DatagramSocket(10000); byte[] buf=new byte[1024]; DatagramPacket datagramPacket=new DatagramPacket(buf, buf.length); ds.receive(datagramPacket); InetAddress ip= datagramPacket.getAddress(); int port=datagramPacket.getPort(); byte[] resByte=datagramPacket.getData(); int length=datagramPacket.getLength(); String info=new String(resByte,0,length); System.out.println("來自:"+ip.getHostAddress()+":"+port+"說:"+info); } }
結果:
來自:100.66.217.80:56356說:Hello UDP
先運行接收端,此時程式會阻塞住,等待接收。。。
再運行發送端
接收到一次以後就會斷,用while(true) 包一下,死迴圈但是會阻塞住,註意不要把創建DatagramSocket包進去