获取本机IPV6地址
Java代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
public
static
String getLocalIPv6Address()
throws
IOException {
InetAddress inetAddress =
null
;
Enumeration<NetworkInterface> networkInterfaces = NetworkInterface
.getNetworkInterfaces();
outer:
while
(networkInterfaces.hasMoreElements()) {
Enumeration<InetAddress> inetAds = networkInterfaces.nextElement()
.getInetAddresses();
while
(inetAds.hasMoreElements()) {
inetAddress = inetAds.nextElement();
// Check if it's ipv6 address and reserved address
if
(inetAddress
instanceof
Inet6Address
&& !isReservedAddr(inetAddress)) {
break
outer;
}
}
}
String ipAddr = inetAddress.getHostAddress();
// Filter network card No
int
index = ipAddr.indexOf(
'%'
);
if
(index >
0
) {
ipAddr = ipAddr.substring(
0
, index);
}
return
ipAddr;
}
/**
* Check if it's "local address" or "link local address" or
* "loopbackaddress"
*
* @param ip
* address
*
* @return result
*/
private
static
boolean
isReservedAddr(InetAddress inetAddr) {
if
(inetAddr.isAnyLocalAddress() || inetAddr.isLinkLocalAddress()
|| inetAddr.isLoopbackAddress()) {
return
true
;
}
return
false
;
}
|
描述:用于获取本机可用的IPV6地址,但是实际测试经过过滤后获取的地址为xxxxx:8080类似这样的格式,在实际的使用中还需要改变一下过滤的方式。毕竟如果双方互相传输的话,需要双方都开户一个服务器端(用于接收视频),不宜让用户自己再填写自身的IPV6地址,会造成诸多不便。