精华内容
下载资源
问答
  • QT下获取网关地址(验证可用)QT下获取网关地址(验证可用)QT下获取网关地址(验证可用)
  • linux 使用c语言如何获取网关地址

    千次阅读 2020-07-09 15:30:13
    使用命令netstat -r|grep default|cut -f 10 -d' ' 可以快速的获取到网关地址,但这是在终端获取的,如何用C语言获取网关地址呢,方法很简单,使用popen函数就可以了。 #include <stdio.h> #include <...

      使用命令netstat -r|grep default|cut -f 10 -d ' ' 可以快速的获取到网关地址,但这是在终端获取的,如何用C语言获取网关地址呢,方法很简单,使用popen函数就可以了。

    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main()
    {
    	char Cmd[100]={0};
    	char readline[100]={0};
    	memset( Cmd, 0, sizeof( Cmd ) );
    	sprintf( Cmd,"netstat -r|grep default|cut -f 10 -d \' \'");
        FILE* fp = popen( Cmd, "r" );
    
        if ( NULL == fp )
        {
            return -1;
        }
    
        memset( readline, 0, sizeof( readline ) );
        while ( NULL != fgets( readline,sizeof( readline ),fp ))
        {
        	printf("gateway=%s\n",readline);
        	break;
        }
        pclose(fp);
        return 0;
    }
    

     

    展开全文
  • C# 获取网关地址 读取配置文件 打开关闭exe

    C#好久好久没去用过了,今早写了个C#小程序, 链接手机热点,然后根据发过来的信息去读取配置文件,将配置文件中相应的exe重启,即先关闭后启动.

    里面涉及到的一些小块我在这里记录下.


    1, 获取链接的手机热点的网关

    //得到网关地址
    private static string GetGateway()
    {
            string strGateway = "";
    
            //获取所有网卡
            NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
    
            foreach (var netWork in nics)
            {
                    IPInterfaceProperties ip = netWork.GetIPProperties();
                    //获取该IP对象的网关
                    GatewayIPAddressInformationCollection gateways = ip.GatewayAddresses;
    
                    foreach (var gateWay in gateways)
                    {
                            if (IsPingIP(gateWay.Address.ToString()))
                            {
                                    strGateway = gateWay.Address.ToString();
                                    break;
                            }
                    }
                    if (strGateway.Length > 0)
                    {
                            break;
                    }
            }
            return strGateway;
    }
    
    public static bool IsPingIP(string strIP)
    {
            try
            {
                    Ping ping = new Ping();
                    PingReply reply = ping.Send(strIP, 1000);
                    return true;
            }
            catch
            {
                    return false;
            }
    }




    2, 读取配置文件
    [DllImport("kernel32")]
    private static extern int GetPrivateProfileString(string lpAppName, string lpKeyName, string lpDefault,
            StringBuilder lpReturnedString, int nSize, string lpFileName);
    
    
    // 读取配置文件
    private static string ReadINIString(string section, string key, string def, string filePath)
    {
            StringBuilder temp = new StringBuilder(1024);
            try
            {
                    GetPrivateProfileString(section, key, def, temp, 1024, filePath);
            }
            catch { }
            return temp.ToString();
    }




    3.打开关闭exe
    // 关闭exe
    Process[] allProgresse = Process.GetProcesses();
    foreach (Process closeProgress in allProgresse)
    {
            if (closeProgress.ProcessName.Equals(sname))
            {
                    closeProgress.Kill();
                    closeProgress.WaitForExit();
                    break;
            }
    }
    
    // 打开exe
    System.Diagnostics.Process.Start(sPath);



    展开全文
  • 最近需要在Swift项目中获取路由器的网关地址,在网上找了半天的代码也没发现太多有价值的东西,而且大多都是OC代码,很少有Swift的相关代码,只找到了一个通过Swift代码获取设备IP的代码,最后实在没办法只能曲线...

    最近需要在Swift项目中获取路由器的网关地址,在网上找了半天的代码也没发现太多有价值的东西,而且大多都是OC代码,很少有Swift的相关代码,只找到了一个通过Swift代码获取设备IP的代码,最后实在没办法只能曲线救国了。

    在路由器默认登录地址方面,主流品牌默认地址都是一样的,但也有不少国际品牌或者不太出名的路由器品牌默认地址不一样,以下一起来看:
    绝大多数主流品牌路由器默认管理登录地址为:http://192.168.1.1 /或者 http://192.168.0.1/

    其它品牌路由器默认登录地址汇总如下:

    实达2110EH ROUTER路由器默认管理地址: http://192.168.10.1/

    D-LINK路由器默认管理地址: http://192.168.0.1

    阿尔法路由器默认管理地址: http://192.168.18.1

    全向QL1680路由器默认管理地址: http://10.0.0.2

    sunrise DSL-802E_R3A路由器默认管理地址: http://10.0.0.2/

    GVC DSL-802E/R3A路由器默认管理地址: http://10.0.0.2/

    艾玛 701g路由器默认管理地址: http://192.168.101.1或者http://192.168.0.1/

    实达2110EH ROUTER路由器默认管理地址: http://192.168.10.1/

    我这里有两个品牌的路由器,网关分别是:
    TP-Link http://192.168.1.1/
    小米 http://192.168.31.1/
    华为 http://192.168.3.1/

    根据以上的总结,这个网关大体都差不多的,我们可以通过获取设备的IP地址来修改为网关的地址,不过这种方法纯属无奈之举,目前的水平达不到,只能先这样用着了。

    下面上代码:

    --- Swift 2.3 ---
    
    // ----- 获取 IP 地址  前提是你需要在桥接头文件里加上 #include <ifaddrs.h>
    func getIPAddress() -> String {
        var address = ""
    
        // Get list of all interfaces on the local machine:
        var ifaddr : UnsafeMutablePointer<ifaddrs> = nil
        if getifaddrs(&ifaddr) == 0 {
    
            // For each interface ...
            for (var ptr = ifaddr; ptr != nil; ptr = ptr.memory.ifa_next) {
                let interface = ptr.memory
    
                // Check for IPv4 or IPv6 interface:
                let addrFamily = interface.ifa_addr.memory.sa_family
                if addrFamily == UInt8(AF_INET) || addrFamily == UInt8(AF_INET6) {
    
                    // Check interface name:
                    if let name = String.fromCString(interface.ifa_name) where name == "en0" {
    
                        // Convert interface address to a human readable string:
                        var addr = interface.ifa_addr.memory
                        var hostname = [CChar](count: Int(NI_MAXHOST), repeatedValue: 0)
                        getnameinfo(&addr, socklen_t(interface.ifa_addr.memory.sa_len),
                                    &hostname, socklen_t(hostname.count),
                                    nil, socklen_t(0), NI_NUMERICHOST)
                        address = String.fromCString(hostname)!
                    }
                }
            }
            freeifaddrs(ifaddr)
        }
        var ad = ["0", "0", "0", "0"]
        ad = address.componentsSeparatedByString(".") // 把获取到的手机IP拆分开放到数组ad中
        ad[3] = "1" // 将最后一位强制修改为1
        address = ad[0] + "." + ad[1] + "."  + ad[2] + "."  + ad[3] // 再把修改后的ad数组组合成String
        print(address) // 看看修改结果
        return address // 返回值
    }

    思路就是把获取到的设备IP地址的最后一位手动修改为”1”,前面三位不需要修改,比如我的手机ip地址是 192.168.31.212,所以网关地址就是192.168.31.1。

    这是一种比较无奈的方法,但是关键时刻也不能不说是一种思路。这种方法能适应大多数的路由器,分寸大家自己掌握,我的项目是允许的,先用着,以后再优化。

    最近苹果更新了Swift3.0,这里更新一下代码。

    --- Swift 3 ---
    
    // ----- 获取 IP 地址  前提是你需要在桥接头文件里加上 #include <ifaddrs.h> 
    func getLocalIPAddressForCurrentWiFi() -> String? {
        var address: String?
    
        // get list of all interfaces on the local machine 
        var ifaddr: UnsafeMutablePointer<ifaddrs>? = nil
        guard getifaddrs(&ifaddr) == 0 else {
            return nil
        }
        guard let firstAddr = ifaddr else {
            return nil
        }
        for ifptr in sequence(first: firstAddr, next: { $0.pointee.ifa_next }) {
    
            let interface = ifptr.pointee
    
            // Check for IPV4 or IPV6 interface 
            let addrFamily = interface.ifa_addr.pointee.sa_family
            if addrFamily == UInt8(AF_INET) || addrFamily == UInt8(AF_INET6) {
                // Check interface name 
                let name = String(cString: interface.ifa_name)
                if name == "en0" {
                    // Convert interface address to a human readable string 
                    var addr = interface.ifa_addr.pointee
                    var hostName = [CChar](repeating: 0, count: Int(NI_MAXHOST))
                    getnameinfo(&addr,
                                socklen_t(interface.ifa_addr.pointee.sa_len),
                                &hostName, socklen_t(hostName.count), nil, socklen_t(0), NI_NUMERICHOST)
                    address = String(cString: hostName)
                }
            }
        }
        freeifaddrs(ifaddr)
        return address
    }

    大家可以根据这个代码自己再修改为合适自己的代码使用。

    展开全文
  • Linux 获取网关地址

    2015-05-13 16:56:00
    目标 网关 子网掩码 标志 跃点 引用 使用 接口 192.168 . 123.0 0.0 . 0.0 255.255 . 255.0 U 1 0 0 eth1 0.0 . 0.0 192.168 . 123.254 0.0 . 0.0 UG 0 0 0 eth1 (2)cat /pro/net/route...

    route命令的用法:操作或者显示IP路由表
    route:DESCRIPTION
    Route manipulates the kernel's IP routing tables. Its primary use is to set up static routes to
    specific hosts or networks via an interface after it has been configured with the ifconfig(8) pro‐gram.

    When the add or del options are used, route modifies the routing tables. Without these options,
    route displays the current contents of the routing tables.
    route-n:(用于打印路由表)
    show numerical addresses instead of trying to determine symbolic host names. This is useful
    if you are trying to determine why the route to your nameserver has vanished.

    一、在Linux下查看路由表:

    (1)用命令route -n

    root@Ubunut10:~# route -n
    内核 IP 路由表
    目标            网关            子网掩码        标志  跃点   引用  使用 接口
    192.168.123.0   0.0.0.0         255.255.255.0   U     1      0        0 eth1
    0.0.0.0         192.168.123.254 0.0.0.0         UG    0      0        0 eth1

    (2)cat /pro/net/route

    root@Ubunut10:/proc/net# cat route 
    Iface    Destination    Gateway     Flags    RefCnt    Use    Metric    Mask        MTU    Window    IRTT                                                       
    eth1      007BA8C0    00000000    0001      0      0      1      00FFFFFF      0    0    0                                                                               
    eth1      00000000    FE7BA8C0    0003      0      0      0      00000000      0    0    0 

    二、实现代码:

    #include <stdio.h>
    #include <stdlib.h>
    #include <fcntl.h>
    #include <ctype.h>
    #include <signal.h>
    #include <unistd.h>
    #include <string.h>
    #include <errno.h>
    
    #include <arpa/inet.h>
    
    
    int get_gateway_addr(char *gateway_addr)
    {
        char buff[256];
        int  nl = 0 ;
        struct in_addr gw;
        int flgs, ref, use, metric;
        unsigned long int d,g,m;
        unsigned long addr;
        
        FILE *fp = NULL;
        
        fp = fopen("/proc/net/route", "r");
        if (fp == NULL)
        {
            return -1;
        }
            
        nl = 0 ;
        memset(buff, 0,sizeof(buff));
        while( fgets(buff, sizeof(buff), fp) != NULL ) 
        {
            if(nl) 
            {
                int ifl = 0;
                while(buff[ifl]!=' ' && buff[ifl]!='\t' && buff[ifl]!='\0')
                    ifl++;
                buff[ifl]=0;    /* interface */
                if(sscanf(buff+ifl+1, "%lx%lx%X%d%d%d%lx",
                       &d, &g, &flgs, &ref, &use, &metric, &m)!=7) 
                {
                    fclose(fp);
                    return -2;
                }
    
                ifl = 0;        /* parse flags */
                //if(flgs&RTF_UP) 
                //{            
                    gw.s_addr   = g;
                        
                    if(d==0)
                    {
                        strcpy(gateway_addr, inet_ntoa(gw));
                        fclose(fp);
                        return 0;
                    }                
                //}
            }
            nl++;
        }    
        
        if(fp)
        {
            fclose(fp);
            fp = NULL;
        }
        
        return    -1;
    }
    
    int main()
    {
        
        char gateway_addr[15] = {0};
         get_gateway_addr(gateway_addr);
        printf("gateway_addr:%s\n", gateway_addr);
        return 0;
    }

    三、运行结果:

    gateway_addr:192.168.123.254

     

    转载于:https://www.cnblogs.com/youthshouting/p/4500957.html

    展开全文
  • qt获取IP、网关地址

    千次阅读 2017-03-17 20:42:10
    最近由于项目需要使用socket通信,要获取网关地址,于是上网搜了一下 首先我们要添加iphlpapi.lib库,从而获得windows下一些基本的网络连接信息。 函数 作用 GetNumberOfInterfaces() 获取当前的网络接口数目 ...
  • MFC 编程获取 IP地址 网关 MAC地址等信息
  • Linux下网关地址获取

    万次阅读 2012-02-08 12:31:42
     用户空间获取网关地址 有两种方法,一个是从/proc/net/route中读取,这是最简单,最直接的,route命令就是这么做的,可以参考net-tools包中route的源码实现。 另一种是用Netlink来实现。利用NETLINK_ROUTE...
  • Linux下网关地址获取1

    千次阅读 2012-01-11 17:23:31
     用户空间获取网关地址 有两种方法,一个是从/proc/net/route中读取,这是最简单,最直接的,route命令就是这么做的,可以参考net-tools包中route的源码实现。 另一种是用Netlink来实现。利用NETLINK_ROUTE...
  • 重点针对跨三层转发交换路由的情况下,如何通过netlink获取gateway的二层地址,将netlink的使用接口话,C语言编写
  • Android 获取gateway网关地址

    千次阅读 2018-11-28 10:21:12
    my_wifiManager = ((WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE)); assert my_wifiManager !...获取方式  intToInetAddress(dhcpInfo.gateway).getHostAddress()  
  • 1、WIFI情况下获取网关: 这种情况很简单,也就是通过DhcpInfo直接获取 WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); DhcpInfo info=wifiManager..getDhcpInfo();...
  • WifiManager wm = (WifiManager)getSystemService(WIFI_SERVICE);  DhcpInfo di = wm.getDhcpInfo();  long getewayIpL=di.gateway;  String getwayIpS=long2ip...//网关地址  long netmaskIpL=di.net
  • IOS获取本地IP地址以及网关IP地址

    千次阅读 2015-04-13 14:29:07
    IOS获取本地IP地址以及网关IP地址
  • 现在博主在上大三,正在学习一些计算机网络的一些概念,知道了局域网ip和网关ip不同的概念,当时还纳了闷了2的32...手机在连入局域网的WiFi的时候,会自动获取IP地址信息到本机,然后可以通过“设置→系统→关于手机→
  • 获取不了网关mac地址

    2020-01-05 08:47:08
    获取不了网关mac地址 问题:从2.14到3.65(映射地址2.141)网络不通,但是从3端的其他机器到3.65网络OK。 原因: #arp Address HWtype HWaddress Flags Mask Iface 192.168.3.254 ether incomplet ...
  • linux shell 获取默认网关地址

    千次阅读 2014-06-07 11:34:22
    1731 * 获取默认网关 1732 */ 1733 int get_gateway(char *gate) 1734 { 1735 FILE *fp = NULL; 1736 char temp[20] = {0}; 1737 int i = 0; 1738 1739 fp = popen(GET_GATEWAY_CMD, "r"); 1740 if (fp == NULL) { ...
  • OpenWrt获取网关IP

    万次阅读 2016-07-22 16:18:52
    OpenWrt获取网关IP一、概述OpenWrt也是Linux,题目其实也可以叫做“Linux获取网关IP”。一般想得知网关IP,都是因为本地接口设置了DHCP,网关IP,大多数也即是DHCP Server的IP(DHCP Relay除外)。二、一般方法汇总1...
  • C#编程获取IP地址、子网掩码、网关地址 添加对程序集System.Management的引用using System;using System.Management;namespace ConsoleApplication1{ class Program { static void Main(string[] args)
  • qt 获取网关

    千次阅读 2017-08-09 10:25:18
    另一种用windowsAPI实现,但是windows10 下用无线连接获取失败 static void getGateway( QString &netmask, QString &gateway) { PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO ();...
  • 局域网的配置,之前查找了很多方法都是关于EthernetManager(已隐藏,无法直接调用),试过很多种...1.获取所有有效网关 /** * @return 获取所有有效的网卡 */ public static String[] getAllNetInterface() { ...
  • //获取网关mac std_wstring get_gate_mac() { std::map > ip_config; KHAboutLocalEnvirTool::LocalIpconfigListEx(ip_config); std_wstring gateways,gate_mac; for ( auto it = ip_config.b
  • upnp Golang UPNP实现可打开网关端口并获取WAN地址 可用的功能包括: AddMappingPort DelMappingPort 外部IP地址
  • android获取网关ip

    万次阅读 2011-04-13 14:12:00
     最近项目里有需求在android程序里获取系统的网关ip,最初的方案是通过...让我给逮到了一个android.net.DhcpInfo,这个类里面 就存储着网关ip的数据,在此,我把获取网关ip的代码贴下来,供大家参考。<br

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 112,021
精华内容 44,808
关键字:

如何获取网关地址