获取本机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地址,会造成诸多不便。