android中如何获取蹭网用户的ip地址,求详细编码

android中如何获取蹭网用户的ip地址,求详细编码,第1张

根据你的描述,既要保证自己上网网速不受影响,同时又能防止其它人蹭网,可以采取以下办法:

第一、修改信息。关闭SSID广播。

第二、加密网络。使用WPA2-PSK中AES方式加密,密码设置尽可能长,使用数字加大小写字母加符号组合形成。

第三、地址过滤。将所有已方计算机MAC地址添加到白名单,在无线路由器找到无线设置,打开MAC地址过滤,在允许的列表中添加新条目,填写上手机的MAC地址。

第四、关闭DHCP功能。

第五、定期升级。到路由器官方网站查看固件更新,防止路由器漏洞导致的蹭网。

但是,目前android不支持IPV6的协议,不过据说内核C库上是支持。。网络是推荐使用GogoDroid客户端来获取IPV6地址;

经尝试,是可以获取地址,但是总不能要求需要使用的客户端都安装这个软件吧。不太现实。现状:

现在,服务器部署在IPV6网络环境,提供支持IPV6的路由器;问题,开发的客户端(不包括GogoDroid)需要用IPV6协议的网络访问服务器接口,但是手机并不能获取到IPV6地址。思路:

1、客户端自行, 模拟GogoDroid的方式,来获取一个网络地址。比较可行,毕竟是开源的项目。。

2、通过NDK来调用C库,完成获取IPV6地址的 *** 作。。第一种方式的可行性比较高。。大家有更好的方式或者是已经现成的解决方案,希望能帮忙提供信息资料,不胜感激。!

第一种方案

[mw_shl_code=java,true] // 获取本地IP函数

public String getLocalIPAddress() {

WifiManager wifimanage = (WifiManager) getSystemService(thisWIFI_SERVICE);// 获取WifiManager

// 检查wifi是否开启

if (wifimanageisWifiEnabled()) {

WifiInfo wifiinfo = wifimanagegetConnectionInfo();

String wifiip = intToIp(wifiinfogetIpAddress());

Logi("MyTag", "-------wifiip----" + wifiip);

return wifiip;

}

try {

for (Enumeration<NetworkInterface> mEnumeration = NetworkInterface

getNetworkInterfaces(); mEnumerationhasMoreElements();) {

NetworkInterface intf = mEnumerationnextElement();

for (Enumeration<InetAddress> enumIPAddr = intf

getInetAddresses(); enumIPAddrhasMoreElements();) {

InetAddress inetAddress = enumIPAddrnextElement(); // 如果不是回环地址

if (!inetAddressisLoopbackAddress()) { // 直接返回本地IP地址

Logi("MyTag", "------getLocalIPAddress---"

+ inetAddressgetHostAddress()toString());

return inetAddressgetHostAddress()toString();

}

}

}

} catch (SocketException ex) {

exprintStackTrace();

}

Logi("MyTag", "------getLocalIPAddress---" + null);

return null;

}[/mw_shl_code]

测试结果:手机端可以正常获取,

电视盒子在插入网线情况下获取的是一串字符fe80::5ec6:d0ff:fec3:b963%eth0,网上有人这是16进制需要处理,但是处理后貌似不是对的ip,wifi下情况正常。

(由于手机不会插入网线,所以此方法是适用手机的)

第二种 方案

此方法可以选择获取ipv4或ipv6,当然我们用的是ipv4

[mw_shl_code=java,true] /

Get IP address from first non-localhost interface

@param ipv4

true=return ipv4, false=return ipv6

@return address or empty string

/

public String getIPAddress(boolean useIPv4) {

WifiManager wifimanage = ((WifiManager) getSystemService(thisWIFI_SERVICE));// 获取WifiManager

// 检查wifi是否开启

if (wifimanageisWifiEnabled()) {

WifiInfo wifiinfo = wifimanagegetConnectionInfo();

String wifiip = intToIp(wifiinfogetIpAddress());

Logi("MyTag", "-------wifiip----" + wifiip);

return wifiip;

}

try {

List<NetworkInterface> interfaces = Collections

list(NetworkInterfacegetNetworkInterfaces());

for (NetworkInterface intf : interfaces) {

List<InetAddress> addrs = Collectionslist(intf

getInetAddresses());

for (InetAddress addr : addrs) {

if (!addrisLoopbackAddress()) {

String sAddr = addrgetHostAddress()toUpperCase();

boolean isIPv4 = InetAddressUtilsisIPv4Address(sAddr);

if (useIPv4) {

if (isIPv4) {

Logi("MyTag", isIPv4 + "--ipv4------------"

+ sAddr);

// return sAddr;

}

} else {

if (!isIPv4) {

int delim = sAddrindexOf('%'); // drop ip6 port

// suffix

String str = delim < 0 sAddr : sAddr

substring(0, delim);

Logi("MyTag", isIPv4 + "-no-ipv4------------"

+ str);

// return str;

}

}

}

}

}

} catch (Exception ex) {

} // for now eat exceptions

return "";

}[/mw_shl_code]

测试结果:手机、电视wifi情况下获取ip是正常的,电视插网线获取ip也是正常。

但是在软件试运行期间,出现电视盒子获取ip为0000,此时电视盒子的网络正常,经过测试分析,发现该网络路由是由管理员手动设置过ip段,

一般我们局域网ip类似于192168112 ,手动设置路电视盒子ip为10101107,此时ip获取错误,一直取不到这个ip,不知道什么原因导致的。

以上就是关于android中如何获取蹭网用户的ip地址,求详细编码全部的内容,包括:android中如何获取蹭网用户的ip地址,求详细编码、android 如何获取IPV6的地址、android快传怎样获得通信ip等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10156833.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存