客戶端綁定端口 3456,伺服器端用 `receivePacket.getLength()` 取得值卻是 24,改綁其他端口仍是 24,以為是端口號錯誤。
`DatagramPacket.getLength()` 返回的是「實際接收到的資料長度(位元組數)」,而非發送端口號。 範例中發送了 24 位元組的資料,故返回 24。
DatagramPacket receivePacket = new DatagramPacket(buf, buf.length);
socket.receive(receivePacket);
int senderPort = receivePacket.getPort(); // 發送方端口
InetAddress senderIP = receivePacket.getAddress(); // 發送方 IP
int dataLength = receivePacket.getLength(); // 資料長度
String data = new String(receivePacket.getData(), 0, dataLength);
| 方法 | 含義 |
|---|---|
| `getPort()` | 發送端口號 |
| `getAddress()` | 發送 IP 位址 |
| `getLength()` | 接收資料實際長度 |
| `getData()` | 緩衝區引用(需配合 offset/length 解析) |