Java網路程式設計UDP協議傳送接收資料
阿新 • • 發佈:2019-01-14
UDP協議傳送資料步驟
A:建立傳送端socket物件;
B:建立資料,並把資料打包;
C:呼叫socket物件的傳送方法傳送資料包;
D:釋放資源
package net; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class SendDemo { public static void main(String[] args) throws IOException { //A DatagramSocket ds = new DatagramSocket(); //B byte[] by = "Hello,UDP".getBytes(); int length = by.length; InetAddress addr = InetAddress.getByName("192.168.1.22"); int port = 10010; DatagramPacket dp = new DatagramPacket(by, length, addr, port); //C ds.send(dp); //D ds.close(); } }
UDP協議接收資料步驟
A:建立接收端socket物件;
B:建立一個數據包(接收容器);
C:呼叫socket物件的接收方法接收資料;
D:解析資料,顯示到控制檯;
E:釋放資源
package net; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class ReceiveDemo { public static void main(String[] args) throws IOException { //A DatagramSocket ds = new DatagramSocket(10010); //B byte[] by = new byte[1024]; int length = by.length; DatagramPacket dp = new DatagramPacket(by, length); //C ds.receive(dp); //D //獲取對方ip InetAddress addr = dp.getAddress(); String ip = addr.getHostAddress(); byte[] by2 = dp.getData(); int len = by2.length; String s = new String(by2, 0, len); System.out.println(ip+"傳送的資料是:"+s); //E ds.close(); } }
先執行接收端程式碼,再執行傳送端程式碼。
多次從鍵盤接收發送資料版本
package net; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class SendDemo { public static void main(String[] args) throws IOException { //A DatagramSocket ds = new DatagramSocket(); //資料來自鍵盤錄入 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String line = null; while((line = br.readLine()) != null){ //當輸入jieshu時,結束 if("jieshu".equals(line)){ break; } //B byte[] by = line.getBytes(); int length = by.length; InetAddress addr = InetAddress.getByName("192.168.1.22"); int port = 10010; DatagramPacket dp = new DatagramPacket(by, length, addr, port); //C ds.send(dp); } //D ds.close(); } }
package net;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class ReceiveDemo {
public static void main(String[] args) throws IOException {
//A
DatagramSocket ds = new DatagramSocket(10010);
//多次接受版本
while(true){
//B
byte[] by = new byte[1024];
int length = by.length;
DatagramPacket dp = new DatagramPacket(by, length);
//C
ds.receive(dp);
//D
//獲取對方ip
InetAddress addr = dp.getAddress();
String ip = addr.getHostAddress();
byte[] by2 = dp.getData();
int len = by2.length;
String s = new String(by2, 0, len);
System.out.println(ip+"傳送的資料是:"+s);
}
//E
//ds.close();
}
}