精华内容
下载资源
问答
  • 获取本机IPV6地址

    千次阅读 2013-08-25 13:34:22
    获取本机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 ...

    获取本机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地址,会造成诸多不便。
    展开全文
  • 获得本机ipv6地址

    2009-07-28 22:08:16
    直接把这个头文件包含进去,然后在程序中调用getipv6addr()即可获得本机global ipv6 address
  • 获取本机IPv6信息命令:cat /proc/net/if_inet6 root@IT-PC-135:/home/user1/# cat /proc/net/if_inet6 fe80000000000000922b34fffe4e70f4 02 40 20 80 eth0 20010f80075400000000000000000050 02 40 00 80 eth0 ...

    获取本机IPv6信息命令:cat /proc/net/if_inet6

    root@IT-PC-135:/home/user1/# cat /proc/net/if_inet6 
    fe80000000000000922b34fffe4e70f4 02 40 20 80     eth0
    20010f80075400000000000000000050 02 40 00 80     eth0
    00000000000000000000000000000001 01 80 10 80       lo

     

    获取本机IPv6网关命令:ip -6 route show dev eth0

     

    root@IT-PC-135:/home/user1/# ip -6 route show dev eth0
    2001:f80:754::/64  proto kernel  metric 256 
    fe80::/64  proto kernel  metric 256 
    default via 2001:f80:754::1  proto static  metric 1 

     

    #include <stdio.h>
    #include <unistd.h>
    #include <pthread.h>
    #include <stdlib.h>
    #include <string.h>
    #include <sys/prctl.h>
    #include <sys/param.h>
    #include <sys/wait.h>
    #include <errno.h>
    #include <paths.h>
    #include <sys/syscall.h>
    #include <sys/resource.h>
    #include <net/if.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <ifaddrs.h>
    #include <sys/ioctl.h>
    #include <sys/types.h>    
    #include <sys/socket.h>      
    #include <net/route.h> 
    
    #define PROCNET_ROUTE_PATH	"/proc/net/route"
    #define PROCNET_IFINET6_PATH	"/proc/net/if_inet6"
    #define SCOPE_LINK_STR		"fe80"
    
    
    int net_get_ipv6_ifaddr(char type, const char *ifname, char *addr, int length, char *prefix, int length2)
    {
    	int ret = 0;
    	FILE *fp;
    	char addr6[46] = {0}, dev_name[20] = {0};
    	char addr6p[8][5];
    	int length_of_prefix, scope_value, if_flags, if_index;
    	struct sockaddr_in6 sap = {0};
    	
    	if (!ifname || !addr || length <= 0 || !prefix || length2 <= 0)
    		return -1;
    
    	fp = fopen(PROCNET_IFINET6_PATH, "r");
    	if (!fp) return -1;
    
    	lockf(fileno(fp), F_LOCK, 0);	
    	
    	while (fscanf(fp, "%4s%4s%4s%4s%4s%4s%4s%4s %02x %02x %02x %02x %20s\n",
    		addr6p[0], addr6p[1], addr6p[2], addr6p[3],
    		addr6p[4], addr6p[5], addr6p[6], addr6p[7],
    		 &if_index, &length_of_prefix, &scope_value, &if_flags, dev_name) != EOF) {
    		if (!strcmp(dev_name, ifname)) {
    			sprintf(addr6, "%s:%s:%s:%s:%s:%s:%s:%s",
    				addr6p[0], addr6p[1], addr6p[2], addr6p[3],
    				addr6p[4], addr6p[5], addr6p[6], addr6p[7]);
    			if (strncmp(addr6p[0], SCOPE_LINK_STR, strlen(SCOPE_LINK_STR)) == 0) {
    				//fe80 Scope:Link
    				if (type == 1) {
    					inet_pton(AF_INET6, addr6, &sap.sin6_addr);
    					inet_ntop(AF_INET6, &sap.sin6_addr, addr, length);
    					snprintf(prefix, length2, "%d", length_of_prefix);
    					lockf(fileno(fp), F_ULOCK, 0);
    					fclose(fp);
    					return 0;
    				}
    			} else {
    				//2001 Scope:Global
    				if (type == 0) {
    					inet_pton(AF_INET6, addr6, &sap.sin6_addr);
    					inet_ntop(AF_INET6, &sap.sin6_addr, addr, length);
    					snprintf(prefix, length2, "%d", length_of_prefix);
    					lockf(fileno(fp), F_ULOCK, 0);
    					fclose(fp);
    					return 0;
    				}
    			}
    		}
    	}
    	lockf(fileno(fp), F_ULOCK, 0);	
    	fclose(fp);
    	return -1;
    }
    
    int net_get_ipv6_gateway(char type, const char *ifname, char *gateway, int length)
    {
    	FILE *fp;
    	char buffer[80] = {'\0'};
    	char path[128] = {'\0'};
    	char flag = 0;
    	char *dfstr = "default via ";
    	char *p, *q;
    	
    	if (!ifname || !gateway || length <= 0)
    		return -1;
    
    	//snprintf(path, sizeof(path), "/bin/ip -6 route show dev %s", ifname);
    	snprintf(path, sizeof(path), "ip -6 route show dev %s", ifname);//hi3798 have not /bin/ip
    	fp = popen(path, "r");
    	if (!fp) return -1;
    
    	lockf(fileno(fp), F_LOCK, 0);
    	while (fgets(buffer, sizeof(buffer), fp)) {
    		if (!strncmp(buffer, dfstr, strlen(dfstr))) {
    			p = (char *)&buffer[strlen(dfstr)];
    			if (p) {
    				q = strchr(p, ' ');
    				if (q) {
    					if (type == 1) {
    						if (strncmp(p, SCOPE_LINK_STR, strlen(SCOPE_LINK_STR)) == 0) {
    							snprintf(gateway, (int)(q - p + 1), "%s", p);
    							lockf(fileno(fp), F_ULOCK, 0);
    							pclose(fp);
    							return 0;
    						}
    					} else {
    						snprintf(gateway, (int)(q - p + 1), "%s", p);
    						lockf(fileno(fp), F_ULOCK, 0);
    						pclose(fp);
    						return 0;
    					}
    				}
    			}
    		}
    	}
    
    	lockf(fileno(fp), F_ULOCK, 0);
    	pclose(fp);
    	return -1;
    }
    
    int net_is_validipv6(const char *hostname)
    {
    	struct sockaddr_in6 addr;
    	
    	if (!hostname) return -1;
    	if (strchr(hostname, '.')) return -1;//暂时排除::ffff:204.152.189.116
    	if (inet_pton(AF_INET6, hostname, &addr.sin6_addr) != 1) return -1;
        	
    	return 0;
    }

     

     

    int net_ipv4_trans_ipv6(const char *source, char *dest, int length)
    {
    	if (!source || !dest || length <= 0)
    		return -1;
    	
    	if (strncmp(source, "::ffff:", strlen("::ffff:")) == 0 && strchr(source, '.')) {
    		char ipv4[32] = {0};
    		snprintf(ipv4, sizeof(ipv4), "%s", source+strlen("::ffff:"));
    		
    		struct in_addr s4 = {0};
    		if (inet_pton(AF_INET, ipv4, (void*)&s4) != 1)
    			return -1;
    		
    		char s6[4] = {0};
    		s6[0] = s4.s_addr&0xff;
    		s6[1] = s4.s_addr>>8&0xff;
    		s6[2] = s4.s_addr>>16&0xff;
    		s6[3] = s4.s_addr>>24&0xff;
    		snprintf(dest, length, "::ffff:%x%.2x:%x%.2x", s6[0]&0xff, s6[1]&0xff, s6[2]&0xff, s6[3]&0xff);
    		return 0;
    	}
    	
    	
    	return -1;
    }
    
    
    
    int main(int argc, char *argv[])
    {
    	int ret = 0;
    	char ipv6[64] = {0};
    	
    	ret = net_ipv4_trans_ipv6(argv[1], ipv6, sizeof(ipv6));
    	printf("ret = %d ipv6 = %s\n", ret, ipv6);
    	
    	return ret;
    }

     

     

     

    展开全文
  • C#笔记——获取本机ipv6地址

    千次阅读 2017-12-04 20:10:18
    string name = Dns.GetHostName(); IPAddress[] ipadrlist = Dns.GetHostAddresses(name);...会得到三个ipv6地址 第一个是 本地链接 IPv6 地址 第二个是 IPv6地址 第三个是 隧道适配器的本地链接 IPv6 地址
    string name = Dns.GetHostName();
    IPAddress[] ipadrlist = Dns.GetHostAddresses(name);
    foreach (IPAddress ipa in ipadrlist)
    {
        if (ipa.AddressFamily == AddressFamily.InterNetworkV6)
            Console.Writeline(ipa.ToString());
    }
    

    会得到三个ipv6地址
    第一个是 本地链接 IPv6 地址
    第二个是 IPv6地址
    第三个是 隧道适配器的本地链接 IPv6 地址

    展开全文
  • 2、程序可查看本机ipv4和ipv6地址,可修改ipv4地址 3、需要的是修改ipv6地址。 网上查了很多,2中的可达到,但其实我是需要修改ipv6地址。 修改ipv4地址时: WifiConfiguration wifiConf = null; WifiManager ...
  • 几种获取本机IPv6地址的方法

    万次阅读 2014-06-19 10:44:09
    在IPv4通过iotcl函数是可以获取主机的IPv4的地址的,但是楼主使用iotcl函数来获取IPv6的地址就没成功过,经查证,没有看到使用iotcl获取IPv6地址成功的Demo,所以如果想使用iocl函数来获取IPv6地址,我劝你还是...

          如同获取IPv4的地址一般,获取IPv6也是可以通过使用网卡信息来得到IPv6的地址,也可以给一个多播地址发送数据包然后获取IPv6的地址。在IPv4通过iotcl函数是可以获取本主机的IPv4的地址的,但是本楼主使用iotcl函数来获取IPv6的地址就没成功过,经查证,没有看到使用iotcl获取IPv6地址成功的Demo,所以如果想使用iocl函数来获取IPv6地址,我劝你还是做好心理准备哈!不多说,直接上代码了,一下就是我实现的两种获取IPv6地址的方法。        

    mynet.h

    #include  <netinet/in.h>
    
    #include  <sys/param.h>
    #include  <sys/stat.h>
    #include  <sys/ioctl.h>
    #include  <sys/socket.h>
    #include  <sys/socket.h>
    #include  <sys/time.h>
    #include  <sys/file.h>
    #include  <sys/types.h>
    
    #include   <netinet/ip.h>
    #include  <arpa/ftp.h>
    #include  <arpa/inet.h>
    #include  <arpa/telnet.h>
     
    #include  <stdio.h>
    #include  <signal.h>
    #include  <string.h>
    #include  <net/if.h>
    #include  <stdlib.h>
    #include  <unistd.h>
    #include  <error.h>
    #include  <netdb.h>
    #include  <ifaddrs.h> 
    #include  <errno.h> 

    方法一:byeth0getipv6.c

    #include "mynet.h"
          
    int  main(int argc, char *argv[]){  
            struct ifaddrs *ifaddr, *ifa;  
            int family, s;  
            char host[NI_MAXHOST];  
    	char* ifaname;     
    
    	printf("NI_MAXHOST:%d\n",NI_MAXHOST);	 
            if (getifaddrs(&ifaddr) == -1) {  
                printf("getifaddrs\n");  
                return -1;  
            }  
          
            for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) {  
                if (ifa->ifa_addr == NULL)  
                    continue;  
          
                family = ifa->ifa_addr->sa_family;  
                ifaname = ifa->ifa_name; 
                if (family == AF_INET6 && memcmp(ifaname, "eth0", 4) == 0 ) {
                    s = getnameinfo(ifa->ifa_addr, sizeof(struct sockaddr_in6),  
                            host, NI_MAXHOST, NULL, 0, NI_NUMERICHOST);  
                    if (s != 0) {  
                        printf("getnameinfo() failed: %s\n", gai_strerror(s));  
                        return -1;  
                    }
    		if (strchr(host, '%') == NULL){
    			printf("%s IPv6 addr:%s\n", ifa->ifa_name, host);
    		}
    	    }else{
    		continue;
      	    }      
            }  
          
            freeifaddrs(ifaddr);
    	return 0;
    }  
    方法二:bymulgetipv6.c

    #include "mynet.h"
    
    int main(){
    	const char* muladdr = "ff0e::2";
    	int sockfd;
    	int len;
    	int on = 1;
    	struct sockaddr_in6 iface_out;
    	struct sockaddr_in6 remote;
    	char address[45];
    	memset(&remote, 0, sizeof( struct sockaddr_in6  ));
    
    	remote.sin6_family = AF_INET6;
    	inet_pton(AF_INET6, muladdr, &remote.sin6_addr);
    	remote.sin6_port = htons(10086);
    
    	memset(&iface_out, 0, sizeof( struct sockaddr_in6));
    	sockfd = socket(AF_INET6, SOCK_DGRAM, 0);
    	if ( setsockopt(sockfd , SOL_SOCKET, SO_BROADCAST, &on, sizeof(on)) == -1 ) {
    		perror("DEBUG: [get_output_if] setsockopt(SOL_SOCKET, SO_BROADCAST");
    		close(sockfd);
    		return -1;
    	}
    	if ( connect(sockfd, (struct sockaddr *) &remote, sizeof(struct sockaddr_in6)) == -1)
    	{
    		perror("IPv6 DEBUG: [get_output_if] connect");
    		close(sockfd);
    		return -1;
    	}
    
    	len = sizeof(iface_out);
    	if (getsockname(sockfd, (struct sockaddr *) &iface_out, &len) == -1) {
    		perror("DEBUG: [get_output_if] getsockname");
    		close(sockfd);
    		return -1;
    	}
    
    	close(sockfd);
    
    	if (iface_out.sin6_addr.s6_addr == 0) {	/* what is this case?? */
    		return -1;
    	}
    	
    	inet_ntop(AF_INET6, (const void *) &iface_out.sin6_addr, address, 45);
    	printf("IPV6 address:%s\n",address); 
    }



    展开全文
  • windows获得本机IPV6地址(网络编程)

    千次阅读 2011-12-05 14:22:15
    程序可以获得网卡的IPV6地址(如果有) 排除tunnel adapter地址(隧道适配器)、环回地址和无法使用的IP 代码如下: #include #include #include #include #pragma comment(lib, "IPHLPAPI.lib") #pragma ...
  • 返回本机IP地址本地IP地址,获得本机ipv6地址,检查本机ipv4,ipv6地址的网站,域名 都是我在网上找的 ipv4 https://ipv4.ddnspod.com https://api-ipv4.ip.sb/ip https://myip.ipip.net ... ipv6 ...
  • 复现CVE-2020-16898 TCP/IP远程代码执行漏洞时,需要目标主机ipv6地址,如果靶机不在本地,如何获取局域网远程主机ipv6呢? 扫描局域网同网段IP,获取存活主机(或者使用arp -a命令获取ip/mac映射表) 使用 nbtstat...
  • Python 获取本机公网IPv6地址

    千次阅读 2020-06-12 23:34:50
    可能会得到一长一短还有一个临时的IPv6地址本机出口默认使用临时地址),经过实际测试,发现长IPv6地址是比较稳定的(不易发生变化),因此主要想办法获取这个长的IPv6地址就行。 2. 获取长地址 # coding=utf-8 ...
  • IPV6获得本机地址

    2013-01-01 14:11:03
    IPV6获得本机地址,支持IPV6,也支持IPV4.
  • 获取本机各个网卡信息(包括mac地址ipv6 地址等信息)
  • Note:centos的最小化安装没有ipv6的内核模块,需要自己加载模块,所以我重新装了系统,选择的开发系统,其中勾选了网络相关的所有组件,ipv6也在其中。 查看服务器是否加载ipv6模块 lsmod | grep ipv6 如没有...
  • C# 取ipv4 ,ipv6地址(有临时地址时取临时Ipv6地址
  • 获取本机Ipv6的几种方法

    千次阅读 2019-05-16 15:46:08
    以下有几个方法可以获取IPV6地址: #include <stdio.h> #include <string.h> #include <stdlib.h> #include <ifaddrs.h> #include <netinet/in.h> #include <netinet/ip.h> #...
  • IPv6地址

    千次阅读 2018-05-24 21:20:24
    IPv6地址分解为二进制形式。一个因特网协议第6版地址(IPv6地址)是用于标识所涉及的数字标签的网络接口的计算机的一个或网络节点参与一个IPv6的 计算机网络。一个IP地址用于识别的单个网络接口的目的主机,定位...
  • 要想得到真正的网络ip地址要通过下面的方法:首先新建一个工程,修改AndroidManifest.xml文件增加用户权限,如下: //必写 //必写 主要函数代码如下:// 得到本机ip地址 public String getLocalHostIp() { String ip...
  • 本机的Mac地址和Ipv6地址冲突

    千次阅读 2016-12-20 17:02:21
    最近总是报WIndows下的IP地址冲突,开始以为别人占我IP,后来发现不是,arp -a 没有发现盗用者的mac地址。 经查,点击 控制面板-> 管理工具->事件查看器->系统-> TCPIP来源, 双击打开系统记录,就可以找到冲突电脑...
  • 一、IPv6 发展、 二、IPv6 数据报格式、 三、IPv6 和 IPv4 对比、 四、IPv6 地址表示、 五、IPv6 地址 类型、 六、IPv4 向 IPv6 过渡策略、
  • IPv6 地址类型

    万次阅读 2017-10-25 10:37:30
    IPv6 地址
  • 给阿里云ECS主机添加IPV6地址

    千次阅读 2019-04-19 12:30:40
    通过HE的tunnelbroker开启IPv6隧道使国内VPS支持IPv6地址。 1. vim /etc/modprobe.d/disable_ipv6.conf alias net-pf-10 off options ipv6 disable=0 保存退出 2. vim /etc/sysconfi...
  • linux 下获得本机ipv6地址

    千次阅读 2011-05-05 16:48:00
    #include <stdio.h><br /> #include <stdlib.h><br />#include <string.h><br />#include <sys/socket.h><br />#include <arpa/inet.h><br />#include <net/if.h><br />#include <sys/ioctl.h><br />#...
  • C#获取本机IPv4和IPv6地址

    千次阅读 2016-06-21 10:19:33
    这个要引入命名空间 using System.Net; ...using System.Net.Sockets;... //从IP地址列表中筛选出IPv4类型的IP地址 ... MessageBox.Show("获取本机IP出错:" + ex.Message); return ""; } }
  • IPV6地址

    2012-08-02 10:59:38
    认识IPv6地址 我们知道,IPv4地址是类似 A.B.C.D 的格式,它是32位,用"."分成四段,用10进制表示;而IPv6地址类似X:X:X:X:X:X:X:X的格式,它是128位的,用":"分成8段,用16进制表示;可见,IPv6地址空间相...
  • IPv6地址格式

    千次阅读 2019-12-11 09:27:56
    IPv6地址类似 XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX的格式, 它是128位的(8*4*4),用":"分成8段,每个X是一个16进制数(16 = 2^4);可见,IPv6地址空间相对于IPv4地址有了极大的扩充 IPv6 地址的各个部分 ....
  • 配置IPv6地址

    千次阅读 2020-05-25 10:40:34
    例要求为两个虚拟机server0、desktop0的接口eth0配置下列IPv6地址: server0上的地址应该是2003:ac18::305/64 desktop0上的地址应该是2003:ac18::306/64 两个地址必须能与网络2003:ac18/64内的系统通信 地址必须...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 85,153
精华内容 34,061
热门标签
关键字:

本机ipv6地址