UDP發送數據的步驟:
A:創建發送端的Socket服務對象
B:創建數據,並把數據打包
C:通過Socket對象的發送功能發送數據包
D:釋放資源
public class SendDemo {
public static void main(String[] args) throws IOException {
//創建發送端的Socket服務對象
//public DatagramSocket()
DatagramSocket ds = new DatagramSocket();
//創建數據,並把數據打包
//public DatagramPacket(byte[] buf,int Length,InetAddress address,int port)
//buf其實就是要發送的數據信息
//length表示要發送的數據長度
//address數據要發到哪里去,對應的哪個IP地址對象
//port端口號
//byte[] bys = "***".getBytes();
//int length = bys.length;
//InetAddress address = InetAddress.getByName("***.***.**.***");
//int port = 10086;
//DatagramPacket p = new DatagramPacket(bys,length,address,port);
//封裝鍵盤錄入
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = null;
while((line = br.readLine())!= null) {
byte[] bys = line.getBytes();
DatagramPacket dp = new DatagramPacket(bys, bys.length, InetAddress.getByName("000.000.00.000"), 10010);
//通過Socket對象的發送功能發送數據包
//public void send(DatagramPacket p)
ds.send(dp);
}
//釋放資源
ds.close();
}
}
UDP接收數據的步驟:
A:創建接收端的Socket服務對象
B:創建一個數據包,用於接收數據
C:接收數據
D:解析數據,並顯示在控制台
E:釋放資源
public class ReceiveDemo {
public static void main(String[] args) throws IOException {
//創建接收端的Socket服務對象,並且指定端口號
DatagramSocket ds = new DatagramSocket(10010);
while(true){
//創建一個數據包,用於接收數據
byte[] bys = new byte[1024];
DatagramPacket dp = new DatagramPacket(bys, bys.length);
//接收數據
ds.receive(dp);
//解析數據
//獲取ip地址
String ip = dp.getAddress().getHostAddress();
//獲取數據
String data = new String(dp.getData(),0,dp.getLength());
System.out.println("from " + ip + " data is " + data);
}
//釋放資源(服務器一般永遠是開着的)
//ds.close();
}
}