我有一些互联网流量数据需要分析.我只需要分析某个IP范围内的数据包.所以,我需要写一个if声明.我想我需要一个正则表达式来测试条件.我对regexp的了解有点弱.有人能告诉我如何构建该条件的正则表达式.示例范围可能是
Group A
56.286.75.0/19
57.256.106.0/21
64.131.14.0/22
Group B
58.176.44.0/21
58.177.92.0/19
Run Code Online (Sandbox Code Playgroud)
该if声明会像
if("IP in A" || "IP in B") {
do something
}
else { do something else }
Run Code Online (Sandbox Code Playgroud)
所以我需要为"IP in A"和"IP in B"条件制作等效的regexp.
.Net IPAddress类GetAddressBytes方法可用于将IPAddress转换为字节数组.
我的问题是我有这些字节数组,如何将它们转换回IPAddress对象,或IP字符串?(对于IPv4和IPv6都有一个解决方案很重要).
我有一个任务要在C#中完成.我有一个:
IP地址:192.168.1.57和子网掩码:255.255.0.0
我需要找到子网号,在本例中为192.168.0.0.
但是,我需要能够在C#中完成此操作而不使用System.Net库(我编程的系统无法访问此库).
看起来这个过程应该是这样的:
1)将IP地址拆分为八位字节
2)将子网掩码拆分为八位字节
3)子网编号八位位组1 = IP地址八位位组1以子网掩码八位组1表示
4)子网号码八位位组2 = IP地址八位位组2以子网掩码八位组为单位
5)子网编号八位位组3 = IP地址八位位组3以子网掩码八位组3表示
6)子网编号八位位组4 = IP地址八位位组4以子网掩码八位组4表示
7)加入子网号码Octet 1 +.+子网号码八位字节+.+子网号码Octet 3 +.+子网编号八位字节
8)瞧!
但是,我的C#很差.有没有人有C#知识可以提供帮助?
我的问题源于这个过程:假设一个应用程序有一个主机或地址字段,并希望连接到该地址的某些服务.许多应用程序将查看该地址并猜测它是IP地址还是主机名.此应用程序可以使用inet_pton()之类的函数来执行此检查.如果地址看起来像IP地址,则应用程序不会执行DNS查找并直接使用该IP地址.
现在,我并不是说这是一个好主意,但如果有人定义了一个看起来像1.2.3.4的dns名称会怎样.这看起来像一个IP地址,所以上面的应用程序将使用它作为和IP地址而不是DNS名称.
从观察来看,似乎大多数应用程序的行为与第一段中描述的相同.这对我来说有几个原因似乎有益.是否有任何文档声明不应使用看起来像IP地址的DNS名称.或者任何文档说,即使有人将DNS名称定义为IP地址,也可以不尊重它.
在我的Android手机中,我点击了手机,看到了设置 - >无线控制 - > Wifi设置,并点击了我连接的网络.它弹出一个Dialog,其中包含网络状态,级别,速度,信号强度,IP地址和安全类型.所以我只得到了网络的IP地址.
如何通过提供(从我的手机获得的已知IP地址)作为输入来获取其他支持wifi的设备的IP地址?
实际上要明确,如何将特定的已知IP地址作为输入,并且必须能够在Android 2.3中以编程方式获取连接在同一网络上的Wifi设备的其他未知IP地址?
在我的页面中,我使用了查找给定IP地址的Geolocation的功能.这将返回带有zipcode的特定位置的结果.
但这个邮政编码并不准确.我从编码和真实位置获得的zipcodes的差异大约超过200英里.我使用了ip2location网站的以下代码.
require_once('ip2location.class.php');
$ip = new ip2location;
$ip->open('./databases/IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER-MOBILE-SAMPLE.BIN');
$record = $ip->getAll('50.178.183.243');
echo '<b>IP Address:</b> ' . $record->ipAddress . '<br>';
echo '<b>IP Number:</b> ' . $record->ipNumber . '<br>';
echo '<b>Country Short:</b> ' . $record->countryShort . '<br>';
echo '<b>Country Long:</b> ' . $record->countryLong . '<br>';
echo '<b>Region:</b> ' . $record->region . '<br>';
echo '<b>City:</b> ' . $record->city . '<br>';
echo '<b>ISP/Organisation:</b> ' . $record->isp . '<br>';
echo '<b>Latitude:</b> ' . $record->latitude . '<br>';
echo '<b>Longitude:</b> ' . $record->longitude . '<br>';
echo '<b>Domain:</b> …Run Code Online (Sandbox Code Playgroud) 我需要列出任何特定Android设备的所有可用IP地址.
我找到了一些示例代码,但这只会导致返回一个IP地址,这恰好是一个IPv6地址.我需要为任何特定设备获取所有可用的IP.我在这个应用程序的iOS版本上做同样的事情,它返回3个IPv6地址,一个192.地址和一个10.地址.我试图在Android上复制相同的内容.我将所有值传递给数组并将其显示在列表中.
我的代码是:
public String getLocalIpAddress()
{
try {
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()) {
IPAddresses.setText(inetAddress.getHostAddress().toString());
return inetAddress.getHostAddress().toString();
}
}
}
} catch (SocketException ex) {
String LOG_TAG = null;
Log.e(LOG_TAG, ex.toString());
}
return null;
}
Run Code Online (Sandbox Code Playgroud) 我有一个IP地址的数据集(dat),其格式如下:
Person IP_Address
267 555.66.44.222
299 111.222.55.22
513 222.111.8.777
524 888.88.333.222
Run Code Online (Sandbox Code Playgroud)
我还有一个IP地址的数据库(db),其格式如下:
First_IP_Address_In_Netblock Last_IP_Address_In_Netblock Latitude Longitude
16777216 16777471 -27.48333 153.01667
16777472 16778239 26.06139 119.30611
16778240 16779263 -37.814 144.96332
16779264 16781311 23.11667 113.25
16781312 16785407 35.689506 139.6917
16785408 16793599 23.11667 113.25
16793600 16797695 34.38528 132.45528
16797696 16798719 35.689506 139.6917
16798720 16799743 34.38528 132.45528
16799744 16799999 35.689506 139.6917
Run Code Online (Sandbox Code Playgroud)
我的问题有两个:1)我如何转换IP地址(来自数据集或数据库),以便它们采用相同的格式?2)我怎样才能将每个人的纬度和经度相匹配?第二个问题是让我感到困惑,因为每个坐标都与一系列IP地址相关联(从网络块中的第一个IP地址到网络块中的最后一个IP地址),而不是单个地址.
我有以下for循环
for ip in 10.11.{32..47}.{0..255}
do
echo "<ip>${ip}</ip>"
done
Run Code Online (Sandbox Code Playgroud)
我想10.11.{32..35}.{39..61}从上面的for循环中排除这个iprange:此ip范围是上述范围的一个子集.有没有办法做到这一点?
我试过这个,这不起作用:
abc=10.11.{34..37}.{39..61}
for ip in 10.11.{32..47}.{0..255}
do
if [[ $ip == $abc ]]
then
echo "not_defined"
else
echo "<ip>${ip}</ip>"
fi
done
Run Code Online (Sandbox Code Playgroud) 我有一小段代码将32位无符号整数(即:)uint32_t转换为一组四个8位字段,将其视为IP地址,然后向客户端报告它是否在预定的范围内IP地址.
我已经在C中找到了几个不同的代码示例,它们向我展示了如何从struct sockaddr_in包含它的客户端获取IP地址以及C#答案.但是,我想进一步细分地址,保持纯C,并想知道一些简单的事情:
s_addr现场进行Endian-ness检查/更正?CLASS_C_NETMASK,CLASS_B_NETMASK等等,这将是比使用人工生成的掩模更合适的(即:0xFF000000,0x00FF0000,等等).谢谢.