Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 是否可以在objective c或swift中跟踪热点连接的客户端数据使用情况?_Ios_Objective C_Swift_Personal Hotspot - Fatal编程技术网

Ios 是否可以在objective c或swift中跟踪热点连接的客户端数据使用情况?

Ios 是否可以在objective c或swift中跟踪热点连接的客户端数据使用情况?,ios,objective-c,swift,personal-hotspot,Ios,Objective C,Swift,Personal Hotspot,我正在做可行性检查。我想记录通过iPhone连接到互联网的每个设备的数据使用情况 到目前为止,我只能通过以下代码获取设备的数据使用信息:- #include <arpa/inet.h> #include <net/if.h> #include <ifaddrs.h> #include <net/if_dl.h> static NSString *const DataCounterKeyWWANSent = @"WWANSent(bytes)"; s

我正在做可行性检查。我想记录通过iPhone连接到互联网的每个设备的数据使用情况

到目前为止,我只能通过以下代码获取设备的数据使用信息:-

#include <arpa/inet.h>
#include <net/if.h>
#include <ifaddrs.h>
#include <net/if_dl.h>
static NSString *const DataCounterKeyWWANSent = @"WWANSent(bytes)";
static NSString *const DataCounterKeyWWANReceived = @"WWANReceived(bytes)";
static NSString *const DataCounterKeyWiFiSent = @"WiFiSent(bytes)";
static NSString *const DataCounterKeyWiFiReceived = @"WiFiReceived(bytes)";

NSDictionary *DataCounters()
{

    struct ifaddrs *addrs;
    const struct ifaddrs *cursor;

    u_int32_t WiFiSent = 0;
    u_int32_t WiFiReceived = 0;
    u_int32_t WWANSent = 0;
    u_int32_t WWANReceived = 0;

    if (getifaddrs(&addrs) == 0)
    {
        cursor = addrs;
        while (cursor != NULL)
        {
            if (cursor->ifa_addr->sa_family == AF_LINK)
            {
#ifdef DEBUG
                const struct if_data *ifa_data = (struct if_data *)cursor->ifa_data;
                if(ifa_data != NULL)
                {
                    NSLog(@"Interface name %s: sent %tu received %tu",cursor->ifa_name,ifa_data->ifi_obytes,ifa_data->ifi_ibytes);
                }
#endif

                // name of interfaces:
                // en0 is WiFi
                // pdp_ip0 is WWAN
                NSString *name = [NSString stringWithFormat:@"%s",cursor->ifa_name];
                if ([name hasPrefix:@"en"])
                {
                    const struct if_data *ifa_data = (struct if_data *)cursor->ifa_data;
                    if(ifa_data != NULL)
                    {
                        WiFiSent += ifa_data->ifi_obytes;
                        WiFiReceived += ifa_data->ifi_ibytes;
                    }
                }

                if ([name hasPrefix:@"pdp_ip"])
                {
                    const struct if_data *ifa_data = (struct if_data *)cursor->ifa_data;
                    if(ifa_data != NULL)
                    {
                        WWANSent += ifa_data->ifi_obytes;
                        WWANReceived += ifa_data->ifi_ibytes;
                    }
                }
            }

            cursor = cursor->ifa_next;
        }

        freeifaddrs(addrs);
    }
    //86284985 - 86661618
    return @{DataCounterKeyWiFiSent:[NSNumber numberWithUnsignedInt:WiFiSent],
             DataCounterKeyWiFiReceived:[NSNumber numberWithUnsignedInt:WiFiReceived],
             DataCounterKeyWWANSent:[NSNumber numberWithUnsignedInt:WWANSent],
             DataCounterKeyWWANReceived:[NSNumber numberWithUnsignedInt:WWANReceived]};
} 
#包括
#包括
#包括
#包括
静态NSString*常量DataCounterKeyWWANSent=@“WWANSent(字节)”;
静态NSString*const DataCounterKeyWWANReceived=@“WWANReceived(字节)”;
静态NSString*const DataCounterKeyWiFiSent=@“WiFiSent(字节)”;
静态NSString*const DataCounterKeyWiFiReceived=@“WiFiReceived(字节)”;
NSDictionary*数据计数器()
{
结构ifaddrs*地址;
常量结构ifaddrs*游标;
u_int32_t WiFiSent=0;
u_int32_t WiFiReceived=0;
u_int32_t WWANSent=0;
u_int32_t WWANReceived=0;
if(getifaddrs(&addrs)==0)
{
游标=地址;
while(光标!=NULL)
{
如果(光标->ifa\U地址->sa\U族==AF\U链接)
{
#ifdef调试
常量结构if\u data*ifa\u data=(结构if\u data*)光标->ifa\u数据;
if(ifa_数据!=NULL)
{
NSLog(@“接口名称%s:已发送%tu已接收%tu”,光标->ifa_名称,ifa_数据->ifi_对象,ifa_数据->ifi_ibytes);
}
#恩迪夫
//接口名称:
//en0是WiFi
//pdp_ip0是WWAN
NSString*名称=[NSString stringWithFormat:@“%s”,光标->ifa_名称];
如果([name hasPrefix:@“en”])
{
常量结构if\u data*ifa\u data=(结构if\u data*)光标->ifa\u数据;
if(ifa_数据!=NULL)
{
WIFIENT+=ifa_数据->ifi_对象;
WiFiReceived+=ifa_数据->ifi_ibytes;
}
}
如果([名称前缀:@“pdp_ip”])
{
常量结构if\u data*ifa\u data=(结构if\u data*)光标->ifa\u数据;
if(ifa_数据!=NULL)
{
WWANSent+=ifa\U数据->ifi\U对象;
WWANReceived+=ifa\u数据->ifi\u ibytes;
}
}
}
光标=光标->ifa\U下一步;
}
freeifaddrs(addrs);
}
//86284985 - 86661618
return@{DataCounterKeyWiFiSent:[NSNumber numberWithUnsignedInt:WiFiSent],
DataCounterKeyWiFiReceived:[NSNumber numberWithUnsignedInt:WiFiReceived],
DataCounterKeyWWANSent:[NSNumber numberWithUnsignedInt:WWANSent],
DataCounterKeyWWANReceived:[NSNumber numberWithUnsignedInt:WWANReceived]};
} 
嗯。。它只跟踪设备上次重新启动后的数据使用情况。但我能做到


现在。我想知道我是否可以跟踪通过我的设备连接的设备的数据使用情况。这真的有可能,或者我应该放弃这个想法。如果有一些付费图书馆可以做到这一点,那对我来说也很有用。

嘿,Pawan,你有结果吗?@PankajGaikar:是的,这是不可能实现的。