InetAddress 類封裝操作,getLocalHost() 取得本機。DatagramSocket ds = new DatagramSocket(12345);
byte[] buf = "UDP message".getBytes();
DatagramPacket dp = new DatagramPacket(buf, buf.length,
InetAddress.getByName("localhost"), 10000);
ds.send(dp);
ds.close();
DatagramSocket ds = new DatagramSocket(10000);
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
ds.receive(dp); // 阻塞
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getData(), 0, dp.getLength());
System.out.println(ip + " : " + data);
發送執行緒讀取鍵盤輸入 send(),接收執行緒循環 receive() 印出訊息,雙向同時運行。
ServerSocket ss = new ServerSocket(10002);
Socket s = ss.accept(); // 阻塞等待連線
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
System.out.println(new String(buf, 0, len));
s.close(); ss.close();
Socket s = new Socket("localhost", 10002);
OutputStream out = s.getOutputStream();
out.write("TCP message".getBytes());
s.close();
| 類別 | 用途 | 核心方法 |
|---|---|---|
InetAddress | IP 解析 | getByName(), getLocalHost(), getHostAddress() |
DatagramSocket | UDP 端點 | send(), receive(), close() |
DatagramPacket | UDP 資料封包 | getData(), getLength(), getAddress() |
ServerSocket | TCP 伺服器監聽 | accept(), close() |
Socket | TCP 連線端點 | getInputStream(), getOutputStream(), close() |