ip 相关问题

此标记用于与Internet协议相关的问题。您可能希望使用标记[ip-address]代替此标记或与此标记结合使用。有关知识产权的问题,请改用[知识产权]。

从IP搜索网址

我的IP地址是aaa.bbb.ccc.ddd。我怎样才能从这个IP地址找到网站或域名或网站。

回答 1 投票 0

从命令行使用 Psiphon vpn 连接到特定国家/地区

我目前正在开发一个项目,每次都需要使用 Psiphon vpn 连接到不同的国家/地区,以便继续进行自动化。 是否可以连接到我选择的国家/地区...

回答 1 投票 0

IP/25,可以从xx.xx.xx.128开始,而不是xx.xx.xx.1吗?

我有一个从托管公司购买的专用服务器。这家托管公司为我分配了一个 IP 地址。然而,我需要这个专用服务器来用于不同的 VPS 服务器。我已经...

回答 1 投票 0

FastCourier API - 无效 ip 访问应用程序

我正在尝试调用 FastCourier API https://enterprise.fastcourier.com.au/docs/api 以获得简单的报价,但它总是向我抛出错误“无效的 ip 访问应用程序” ...

ip
回答 1 投票 0

AWS JAVA SDK 获取任务的公网IP

我有一个小问题。我正在通过 JAVA SDK 启动一个任务(docker 容器)。这很好用。 但是现在我想通过SDK获取公网IP,不知道怎么做。 这是我现有的...

回答 3 投票 0

如何查找网络接口名称

我有一个 bash 脚本,可以在各种不同的 Ubuntu Linux 机器上运行。它的工作是找出本地主机的 LAN IPv4 地址。 该脚本正在使用 ip 地址显示 eth0 | sed -n '/ine...

回答 7 投票 0

IP 和位置信息

我已经搜索了我网站的 IP 和位置。我想知道我的访问者进入网站的位置。根据他的位置我会做一些录音,以不同的方式显示网站...

回答 4 投票 0

使用 Laravel 获取公共 IP 地址

我当前的IP是:24.62.137.161 当我使用时 $ip = $request->getClientIp(); dd($ip); 我不断收到::1 我怎样才能获取24.62.137.161? 如果可能的话,我不确定我正在尝试做什么。 ...

回答 5 投票 0

如何查找应用程序使用的所有IP地址?

我们公司的计算机对互联网的访问非常有限,当应用程序需要连接到互联网时,我们通常允许应用程序需要连接的IP地址通过防火墙。 不...

回答 2 投票 0

Qt 的 IP 地址小部件,类似于 MFC 的 IP 地址控制

我正在Qt中寻找一个类似于MFC的IP地址控制的小部件。有谁知道这样的小部件,或者我如何创建一个小部件?

回答 5 投票 0

如何在Android 10中扫描连接到同一wifi的wifi设备及其名称?

我想从我的 Android 手机发现我的 PC 的 IP 并连接到在特定端口运行的本地服务器。使用 Fing 工具,它显示设备名称及其 IP 地址。 我该如何导入...

回答 1 投票 0

允许跨子网 IP 发现的服务

我正在开发一款嵌入式软件产品,该产品在具有多个网络端口的 Ubuntu 边缘计算机上运行。 该软件允许用户通过本地主机更改端口的 IP 地址...

回答 1 投票 0

有没有办法直接从 SELECT 查询中将 IP 与 IP+CIDR 进行匹配?

类似的东西 SELECT COUNT(*) AS c FROM BANS WHERE typeid=6 AND (SELECT ipaddr,cidr FROM BANS) MATCH AGAINST 'this_ip'; 因此,您不必首先从数据库中获取所有记录,然后逐一匹配它们......

回答 6 投票 0

基于 IP 地址的国家 - 提高准确性的新方法?

对于我的网络应用程序,我想知道如何提高基于 IP 地址的国家/地区查找的准确性。有没有人尝试过并行使用多个 API 服务并进行投票,即如果 4 o...

回答 1 投票 0

在网络服务器中获取客户端IP地址

我用Delphi开发了一个简单的网络服务器。它是一个独立的类型。客户端连接服务器时如何获取客户端IP地址? 我在单位看到这样一句话: FServer:TIdHTTPWebBrokerB...

回答 1 投票 0

在 Delphi 的网络服务器中获取客户端 IP 地址

我用Delphi开发了一个简单的网络服务器。它是一个独立的类型。客户端连接服务器时如何获取客户端IP地址? 我在单位看到这样一句话: FServer:TIdHTTPWebBrokerB...

回答 1 投票 0

如何在代码中获取我的个人热点的IP地址或其他信息[关闭]

我想获取我的个人热点的详细信息,例如IP地址、连接到我的热点的设备。更重要的是,我通过个人热点与其他设备通信的信息?

回答 1 投票 0

验证 IP 地址的最佳方法是什么?

我有一个方法来验证参数IP地址。作为一个整体开发新手,我想知道是否有更好的方法来做到这一点。 /// /// 检查 IP 地址,将会... 我有一个方法来验证参数IP地址。作为一个整体的开发新手,我想知道是否有更好的方法来做到这一点。 /// <summary> /// Check IP Address, will accept 0.0.0.0 as a valid IP /// </summary> /// <param name="strIP"></param> /// <returns></returns> public bool CheckIPValid(string strIP) { // Split string by ".", check that array length is 3 char chrFullStop = '.'; string[] arrOctets = strIP.Split(chrFullStop); if (arrOctets.Length != 4) { return false; } // Check each substring checking that the int value is less than 255 and that is char[] length is !> 2 Int16 MAXVALUE = 255; Int32 temp; // Parse returns Int32 foreach (string strOctet in arrOctets) { if (strOctet.Length > 3) { return false; } temp = int.Parse(strOctet); if (temp > MAXVALUE) { return false; } } return true; } 它很简单(我可以做到),但它似乎可以解决问题。 IPAddress.TryParse方法的限制是它验证字符串是否可以转换为IP地址,因此如果提供像"5"这样的字符串值,它会认为它是"0.0.0.5"。 验证 IPv4 的另一种方法可能如下: public bool ValidateIPv4(string ipString) { if (String.IsNullOrWhiteSpace(ipString)) { return false; } string[] splitValues = ipString.Split('.'); if (splitValues.Length != 4) { return false; } byte tempForParsing; return splitValues.All(r => byte.TryParse(r, out tempForParsing)); } 可以这样测试: List<string> ipAddresses = new List<string> { "2", "1.2.3", "1.2.3.4", "255.256.267.300", "127.0.0.1", }; foreach (var ip in ipAddresses) { Console.WriteLine($"{ip} ==> {ValidateIPv4(ip)}"); } 输出将是: 2 ==> False 1.2.3 ==> False 1.2.3.4 ==> True 255.256.267.300 ==> False 127.0.0.1 ==> True 您也可以使用 IPAddress.TryParse 但它有局限性并且可能会导致错误的解析。 System.Net.IPAddress.TryParse方法 请注意,如果 TryParse 成功解析输入,则返回 true, 但这并不一定意味着生成的 IP 地址 是有效的。 请勿使用此方法来验证 IP 地址。 但这适用于包含至少三个点的普通字符串。比如: string addrString = "192.168.0.1"; IPAddress address; if (IPAddress.TryParse(addrString, out address)) { //Valid IP, with address containing the IP } else { //Invalid IP } 使用 IPAddress.TryParse,您可以检查是否存在三个点,然后调用 TryParse,如下所示: public static bool ValidateIPv4(string ipString) { if (ipString.Count(c => c == '.') != 3) return false; IPAddress address; return IPAddress.TryParse(ipString, out address); } 最好的正则表达式解决方案(对于 MVC DataAnnotations 很有用): ^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$ C# Regex.IsMatch(value, "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$") using System.Net; public static bool CheckIPValid(string strIP) { IPAddress result = null; return !String.IsNullOrEmpty(strIP) && IPAddress.TryParse(strIP, out result); } 你就完成了 编辑1 添加了一些额外的检查以防止抛出异常(这是昂贵的)。 PS 它不能处理 unicode。 编辑2 如果成功解析字符串,@StephenMurby IPAddress.TryParse 将返回 true。如果您检查该方法的文档,尽管它会在两种情况下抛出异常。 字符串为空。 字符串包含 unicode 字符。 由你决定(设计决策)是否要抛出异常或返回 false。当谈到解析时,我通常更喜欢返回 false 而不是异常(假设这是不保证正确的输入)。 分解 return 语句,我是说, 字符串不为空(也不为空,无论如何都不会解析)AND IP地址解析正确。 请记住,C# 布尔表达式是惰性求值,因此如果字符串为 null 或空,CLR 甚至不会尝试解析该字符串。 关于缺失的如果,你可以做类似的事情, if (IP.TryParse(strIP, out result) { return true; } 但你真正做的只是说如果某事为真,则返回 true。直接返回表达式会更容易。 无需使用 IPAddress 类并根据字节进行验证,这比 Int 好得多<256 approach. public Boolean CheckIPValid(String strIP) { // Split string by ".", check that array length is 4 string[] arrOctets = strIP.Split('.'); if (arrOctets.Length != 4) return false; //Check each substring checking that parses to byte byte obyte = 0; foreach (string strOctet in arrOctets) if (!byte.TryParse(strOctet, out obyte)) return false; return true; } 框架提供了 IPAddress 类,该类又为您提供了 Parse 和 TryParse 方法。 // myAddress is a System.Net.IPAddress instance if (System.Net.IPAddress.TryParse(strIP , out myAddress)) // IP is valid else // IP isn't valid 令人惊讶的是没有人提供正则表达式解决方案。您所需要的只是包含 System.Text.RegularExpressions。为了实际代码和本示例的可读性,我总是将正则表达式模式分块到字符串数组中,然后加入它。 // Any IP Address var Value = "192.168.0.55"; var Pattern = new string[] { "^", // Start of string @"([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\.", // Between 000 and 255 and "." @"([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\.", @"([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\.", @"([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])", // Same as before, no period "$", // End of string }; // Evaluates to true var Match = Regex.IsMatch(Value, string.Join(string.Empty, Pattern)); 您可以这样处理它是 ipv4 或 ipv6: public static string CheckIPValid(string strIP) { //IPAddress result = null; //return !String.IsNullOrEmpty(strIP) && IPAddress.TryParse(strIP, out result); IPAddress address; if (IPAddress.TryParse(strIP, out address)) { switch (address.AddressFamily) { case System.Net.Sockets.AddressFamily.InterNetwork: // we have IPv4 return "ipv4"; //break; case System.Net.Sockets.AddressFamily.InterNetworkV6: // we have IPv6 return "ipv6"; //break; default: // umm... yeah... I'm going to need to take your red packet and... return null; //break; } } return null; } 尝试一下: private bool IsValidIP(String ip) { try { if (ip == null || ip.Length == 0) { return false; } String[] parts = ip.Split(new[] { "." }, StringSplitOptions.None); if (parts.Length != 4) { return false; } foreach (String s in parts) { int i = Int32.Parse(s); if ((i < 0) || (i > 255)) { return false; } } if (ip.EndsWith(".")) { return false; } return true; } catch (Exception e) { return false; } } 如果您只想检查是否有效,只需: bool isValid = IPAddress.TryParse(stringIP, out IPAddress _); 即使高于255并且有点也有效,所以不需要检查。 要验证 IP 地址,请使用以下包 套餐:- using System.Net; //To use IPAddress, inbuilt functionality using System.Net.Sockets; //To access AddressFamily, using System.Text.RegularExpression; //For Regex.IsMatch() 方法:- public bool ValidIPAddress(string IP) { //Validate IP Address , neither IPV4, or V6 if (IPAddress.TryParse(IP, out var address) == false) return false; //check for IPV6 if (address.AddressFamily == AddressFamily.InterNetworkV6) { if (IP.IndexOf("::") > -1) return true; return false; } //check for IPV4 else { //Ipv4 address shouldn't start with 0 eg..it is invalid 0XX.0XX.0XX.0XX if (Regex.IsMatch(IP, @"(^0\d|\.0\d)")) return false; else if (IP.Count(c => c == '.') != 3) return false; else return true; } } 如果需要,请检查以下链接:- https://lncharan.blogspot.com/2020/09/validate-ip-address-in-c.html 有一个简单的方法可以做到这一点,但它需要互联网连接来检查 IP 或主机名: using System; using System.Net; var dnsAddress = /// try { // IP like 8.8.8.8 if (IPAddress.TryParse(dnsAddress, out var ipAddress) && Dns.GetHostAddresses(ipAddress.ToString()).Length >= 1) { return true; } // Hostname like smtp.gmail.com if (Dns.GetHostEntry(dnsAddress).AddressList.Length >= 1) { return true; } return false; } catch (Exception exception) when ( exception is ArgumentNullException || exception is ArgumentOutOfRangeException || exception is System.Net.Sockets.SocketException || exception is ArgumentException ) { // Write log message, if necessary return false; } //To accept values where the ip does not contain zero in the first position of the IPv4 in C# code /// <summary> /// Check IP Address, will accept [255-1].0.0.0 as a valid IP /// </summary> /// <param name="strIP"></param> /// <returns></returns> public bool CheckIPv4Valid(string strIPv4) { // Split string by ".", check that array length is 3 char chrFullStop = '.'; string[] arrOctets = strIPv4.Split(chrFullStop); if (arrOctets.Length != 4) { return false; } // Check each substring checking that the int value is less than 255 and that is char[] length is !> 2 Int16 MAXVALUE = 255; Int32 tempNumber; // Parse returns Int32 #region New code Int32 tempNumberCero; tempNumberCero = int.Parse(arrOctets[0]); if (tempNumberCero <= 0) { return false; } #endregion foreach (string strOctet in arrOctets) { if (strOctet.Length > 3) { return false; } tempNumber = int.Parse(strOctet); if ((tempNumber > MAXVALUE)) { return false; } } return true; } 我想与您分享我的解决方案。 它基于正则表达式,灵感来自 Oreilly 正则表达式食谱。 public class ValidAndCleanedIP { public bool IsValid { get; set; } public string IP { get; set; } } public ValidAndCleanedIP ValidAndCleanIP(string ip) { // ^(?!0)(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) (?!0) check if the numeric part starts not with zero, optional you can use this pattern (25[0-5]|2[0-4][0-9]|[1][0-9][0-9]|[1][0-9]|[1-9]) // there is no check for leading zero becaus there is it possible to order the IP Addresses string pattern = "" + "^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\." + "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\." + "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\." + "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"; Regex regex = new Regex(pattern); bool test = regex.IsMatch(ip); ValidAndCleanedIP validAndCleanedIP = new ValidAndCleanedIP(); validAndCleanedIP.IsValid = test; if (test) { //version removes leading zeros after the dots validAndCleanedIP.IP = new Version(ip).ToString(); } else { validAndCleanedIP.IP = string.Empty; } return validAndCleanedIP; } 或更简单的解决方案 public bool Is_Valid_IP(string ip) { // (?!0) check if the numeric part starts not with zero string pattern = "" + "^(?!0)(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\." + "(?!0)(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\." + "(?!0)(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\." + "(?!0)(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"; Regex regex = new Regex(pattern); return regex.IsMatch(ip); } 大家美好的一天 哇! 对于简单的一行代码,答案的内容非常庞大。 看这个! using System.Text.RegularExpressions; namespace Helper; public class IpHelper { public static bool IsIpValid(string ip) => new Regex("^(?!0)(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(?!0)(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(?!0)(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(?!0)(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$") .IsMatch(ip); } 用途: IpHelper.IsIpValid("192.168.1.1"): 利用上面的一些答案,以及 Copilot 的一些帮助(第 15 个检查): public static bool ValidateIPv4(string ipString) { // 15 is the max length of an IP address (xxx.xxx.xxx.xxx) if (!string.IsNullOrWhiteSpace(ipString) && ipString.Length <= 15) { if (ipString.Count(c => c == '.') == 4) { if (IPAddress.TryParse(ipString, out IPAddress? address)) { if (address.ToString() == ipString) { return true; } } } } return false; }

c# ip
回答 15 投票 0

使用 Java 扫描端口的最快方法

我做了一个非常简单的端口扫描仪,但它运行太慢,所以我正在寻找一种方法让它扫描得更快。这是我的代码: public boolean portIsOpen(String ip, int port, int timeout) { 尝试 { ...

回答 8 投票 0

iOS中如何获取个人热点的子网掩码和广播地址

我需要找到一种方法来查找iOS中我的个人热点的子网掩码和广播地址。 如果设备连接到 WiFi,我将使用以下方法查找设备的 IP 地址。布...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.