精华内容
下载资源
问答
  • 2017-12-04 20:10:18
    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 地址

    更多相关内容
  • 主要用来通过frp之类的路由中转的办法远程唤醒电脑并mstsc后,得到本机ipv6地址。再直接用ipv6远程!比什么路由端口转发啊,ddns转发啊都要靠谱得多。直接点对点!没比这个更快的了!随手用bat写的,只能用于win...
  • 获取本机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;
    }

     

     

     

    展开全文
  • 几种获取本机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); 
    }



    展开全文
  • 获取本机IPv6地址

    千次阅读 2021-02-27 18:27:11
    废话少说,直接上代码(java)命令行输出的就是本机IPv6地址package app;import java.net.Inet6Address;import java.net.InetAddress;import java.net.NetworkInterface;import java.net.SocketException;import ...

    废话少说,直接上代码(java)

    命令行输出的就是本机的IPv6地址

    package app;

    import java.net.Inet6Address;

    import java.net.InetAddress;

    import java.net.NetworkInterface;

    import java.net.SocketException;

    import java.util.Enumeration;

    public class IPv6 {

    public static void main(String[] args) {

    /*获取本机所有ip地址(包括保留地址,ipv4,ipv6 如果安装了虚拟机会更多其他的地址)

    * try {

    InetAddress ads = null;

    Enumeration adds = NetworkInterface.getNetworkInterfaces();

    while(adds.hasMoreElements()) {

    Enumeration inetAds = adds.nextElement().getInetAddresses();

    while(inetAds.hasMoreElements()) {

    ads = inetAds.nextElement();

    System.out.println(ads.getHostAddress());

    }

    }

    } catch (Exception e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }*/

    //获取可用ipv6地址

    try {

    System.out.println(getLocalIPv6Address());

    } catch (SocketException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    }

    public static String getLocalIPv6Address() throws SocketException {

    InetAddress inetAddress =null;

    Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces();

    outer:

    while(networkInterfaces.hasMoreElements()) {

    Enumeration inetAds = networkInterfaces.nextElement().getInetAddresses();

    while(inetAds.hasMoreElements()) {

    inetAddress = inetAds.nextElement();

    //检查此地址是否是IPv6地址以及是否是保留地址

    if(inetAddress instanceof Inet6Address&& !isReservedAddr(inetAddress)) {

    break outer;

    }

    }

    }

    String ipAddr = inetAddress.getHostAddress();

    //过滤网卡

    int index = ipAddr.indexOf('%');

    if(index>0) {

    ipAddr = ipAddr.substring(0, index);

    }

    return ipAddr;

    }

    private static boolean isReservedAddr(InetAddress inetAddr) {

    if(inetAddr.isAnyLocalAddress()||inetAddr.isLinkLocalAddress()||inetAddr.isLoopbackAddress())

    {

    return true;

    }

    return false;

    }

    }

    可以使用命令行进行对比

    如果是window 输入 ipconfig进行查询

    如果是 Linux 输入 ifconfig 进行查询

    展开全文
  • Python 获取本机公网IPv6地址

    千次阅读 2020-06-12 23:34:50
    可能会得到一长一短还有一个临时的IPv6地址本机出口默认使用临时地址),经过实际测试,发现长IPv6地址是比较稳定的(不易发生变化),因此主要想办法获取这个长的IPv6地址就行。 2. 获取长地址 # coding=utf-8 ...
  • 要想得到真正的网络ip地址要通过下面的方法:首先新建一个工程,修改AndroidManifest.xml文件增加用户权限,如下: //必写//必写主要函数代码如下:// 得到本机ip地址public String getLocalHostIp(){String ip...
  • 运营商提供ipv6地址。 路由器后有台linux机器,通过eui64方式自动配置ipv6地址。 但是,运营商会定时强制路由器重拨,导致ipv6的前缀(prefix)变化。 虽然linux会马上自动配置新的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地址

    2009-07-28 22:08:16
    直接把这个头文件包含进去,然后在程序中调用getipv6addr()即可获得本机global ipv6 address
  • 获取本机各个网卡信息(包括mac地址ipv6 地址等信息)
  • 在Python中可靠地获取IPV6地址

    千次阅读 2021-02-04 12:26:15
    问题是,你只是想连接,还是真的想知道地址?如果你只是想联系,你可以s = socket.create_connection(('mysite.com', 80))并建立联系。但是,如果您对该地址感兴趣,可以通过以下方式之一:def get_ip_6(host, port=...
  • 手机设置--更多--移动网络--接入点名称(APN)--进去找到APN协议--设置为 ipv4/ipv6 保存退出,则手机流量上网的时候就会同时得到一个IPV4地址和一个IPV6地址。 该APP运行在安卓设备上,可以将该安卓设备的IPV6地址...
  • 因为IPv4地址即将用尽,现在全球已经开机加速进入IPv6时代,IPv6是Internet Protocol Version 6的缩写,IPv6是IETF设计的用于替代现行版本IP协议(IPv4)的下一代IP协议,目前我们的电脑中也可以查看到IPv6地址信息,...
  • 1. ipv6地址

    千次阅读 2021-03-09 15:28:55
    IPv6地址长度为128比特,每16比特划分为一段,每段由4个十六进制数表示,并用冒号隔开。 IPv6地址包括网络前缀和接口标识两部分。 每一组中的前导“0”都可以省略。 地址中包含的连续全为0的组,可以用双冒号“::”...
  • 返回本机IP地址本地IP地址,获得本机ipv6地址,检查本机ipv4,ipv6地址的网站,域名 都是我在网上找的 ipv4 https://ipv4.ddnspod.com https://api-ipv4.ip.sb/ip https://myip.ipip.net ... ipv6 ...
  • 获取本机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地址

    千次阅读 2020-12-09 17:28:53
    复现CVE-2020-16898 TCP/IP远程代码执行漏洞时,需要目标主机ipv6地址,如果靶机不在本地,如何获取局域网远程主机ipv6呢? 扫描局域网同网段IP,获取存活主机(或者使用arp -a命令获取ip/mac映射表) 使用 nbtstat...
  • 2、程序可查看本机ipv4和ipv6地址,可修改ipv4地址 3、需要的是修改ipv6地址。 网上查了很多,2中的可达到,但其实我是需要修改ipv6地址。 修改ipv4地址时: WifiConfiguration wifiConf = null; WifiManager ...
  • IPv6地址

    千次阅读 多人点赞 2022-05-19 11:37:35
    在我们现有的网络中,几乎所有网络都使用IP协议作为通信的地址协议,我们的网络使用IP来表示地址信息,每一个 节点都应该分配一个唯一 的地址, 才能保证通信正常。现在正常使用的IP协议为版本4,用32位来表示,地址...
  • 问题描述:在Linux系统(Ubuntu 12.04 x64)下,使用ping6命令来ping对本地的ipv6地址(FF80开头的link-local address),如直接使用命令"ping -6 fe80::5054:ff:fe03:9754",则会出现错误提示"无效的参数(connect: ...
  • 其实这个很简单,只不过我一直想用 ipv6-test 的API做一个获取用户IP地址的东西……无奈JSON获取到的只是本机服务器的IP。算了,不研究了,何况人家提供的widget也挺好用的。谷歌了一下,找到这段代码,可以根据用户...
  • windows下获取IP地址的两种方法; 一种可以获取IPv4和IPv6,但是需要WSAStartup; 一种只能取到IPv4,但是不需要WSAStartup; 如下: 方法一:(可以获取IPv4和IPv6) #define _WINSOCK_DEPRECATED_NO_WARNINGS ...
  • 来源:https://gitee.com/yichengxian/nodeTool/blob/main/core/os/OSUtil.js 'use strict'; const os = require('os'); /** * @author ycx * <link>...link> * 系统工具 ... * 获取系统ipv4 地址
  • 查看linux系统IPV6地址

    千次阅读 2019-12-03 11:39:55
    参考链接 : Ubuntu配置开启ipv6 :https://blog.csdn.net/helloHeng/article/details/82502797
  • 如何查看本机是否支持IPv6

    万次阅读 2019-11-26 00:20:28
    测试本机是否支持IPv6协议。1.1. 国家工信部网站检测1.2. 国外网站检测1.3. 国家工信部检测工具2. 手机流量一般支持IPv63. 新拉的家用宽带一般支持IPv64. [我搭建的HFS服务器](https://coco56.gitee.io/blog/hfs/)5...
  • PHP获取IPV6地址

    千次阅读 2019-02-21 21:11:28
    很多人用strpos( $ip , ":")用来确定是否识别出IPv6地址或substr_count( $ip , ".") == 3验证IPv4地址。 但是不是100%准确;例如 ::127.0.0.1或的地址::ffff:10.10.1.1 可以使用: if( filter_var($ip, FILTER_...
  • 随着IPv4地址即将用尽,全球已经加速进入IPv6时代,目前电脑中也可以查看到IPv6地址信息,不过很多朋友对于IPv6是什么不太了解,下面通过ipv6地址知识百科以及怎么查看电脑IPv6地址,让大家深入了解一下。...
  • 摘 要:非对称的IPv6地址翻译方法可以对任意长度前缀的IPv6地址进行透明地翻译。通过使用Netfilter框架实现非对称 IPv6 地址翻译技术,对该翻译方法做了定性和定量的分析。在局域网,通过对比不同环境中地址翻译的...
  • 摘 要:随着Internet技术的发展,IPv6协议将取代IPv4协议成为下一代互联网协议,IPv6协议具有许多新的特性与功能,如提供更大的地址空间、支持网络节点的无状态地址自动配置等,因而提高了因特网的扩展性、可管理性...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 98,732
精华内容 39,492
关键字:

本机ipv6地址