- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
昨天我遇到了一个似乎是 .NET 错误的东西。
IPAddress addr = IPAddress.Parse("fe80::1111:2222:abc%11"); // ScopeId is 11
string s1 = addr.ToString(); // I obviously see fe80::1111:2222:abc%11
addr.ScopeId = 0; // ScopeId is zero from now
string s2 = addr.ToString(); // I expect to see fe80::1111:2222:abc
为什么 s1
即使在 ScopeId
更改后,内容与 s2
相同?在调试器监 window 口中,我看到范围值确实发生了变化。但内部字符串字段没有影响。
可以肯定的是,我尝试使用各种 IPv6 地址和不同的范围 ID - 行为是相同的。我错过了什么?
最佳答案
我将其称为 .NET Framework 中的错误。
如果您查看 IPAddress 类的源代码:
http://referencesource.microsoft.com/#System/net/System/Net/IPAddress.cs
您会看到 .ToString()
方法实际上将结果缓存到名为 m_ToString
的私有(private)字段中。但是,如果您随后查看 ScopeId
属性的 setter ,您会发现它更改了 m_ScopeId
和 m_Address
的私有(private)字段,但它不会清除 m_ToString
值。
如果您查看 Address 属性,您会发现它们在设置该属性时清除了 m_ToString
字段。
如果你想变通,你可以按照他们在这里做的:
How do you determine equality between two IPv6 addresses?
通过使用.GetAddressBytes()
方法传递给构造函数来创建一个新的实例。这将为您提供一个 ScopeId
为零。
关于c# - IPv6:为什么更改 System.Net.IPAddress 的 ScopeId 没有反射(reflect)在 ToString() 表示中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18122303/
我尝试了以下代码使我的代码在双堆栈模式下工作。不幸的是,它没有在双栈模式下打开端口。 var listener = new TcpListener(IPAddress.Any, 2222); list
我昨天问了一个关于将 HEX 字符串转换为 IP 的问题,并在这里得到了答案:C# convert hex into ip 问题是,当我使用函数时 var ip = new IPAddress(lon
我一直在尝试从 API 结果中解析 IP 地址,其中 IPv4 地址的四个部分中的每一个都带有前缀 0(零)。像这样: 127.000.000.001 而不是 127.0.0.1 我在尝试解析 192
我正在使用 pythons ipaddress 模块,我试图只获取第一个可用主机,而不是所有可用主机 下面给了我所有的主机,当我试图索引它时,我得到了下面的错误。 有没有其他方法可以只获得第一个可用的
我正在编写一个 Xamarin.Forms 应用程序,并将一个 PCL 项目添加到我在 Visual Studio 2013 中的主要解决方案中。我在使用多个标准 .net 类时遇到问题。这是一个列表
先介绍一些背景。我在局域网中的每台机器上都安装了 .net 客户端代理。他们也在同一个局域网上与我的中央服务器 [网站] 交互。 弄清楚哪些机器可以相互通信对我的网站来说很重要。例如,如果不配置路由器
我有一个服务器应用程序,我试图自动将 IP 地址设置为从机器动态分配的 IP 地址中获取的地址。到目前为止,我已经得到了这个来获取 IPv4,但它作为 IPAddress[] 类型返回,我在转换为 s
我有一个服务器应用程序,我试图自动将 IP 地址设置为从机器动态分配的 IP 地址中获取的地址。到目前为止,我已经得到了这个来获取 IPv4,但它作为 IPAddress[] 类型返回,我在转换为 s
在代表 IPv6 地址的 IPAddress 实例上调用 ToString() 方法,我得到了一些地址后带有百分号的文本。这是not documented .什么意思? 返回值如下所示:fe80::1
您好,是否可以为 jdbc 瘦驱动程序提供机器名称而不是 ipaddress。或者它会在运行时产生某种错误。我尝试使用机器名称而不是本地主机,它正在工作。因此,如果我们可以提供机器名称而不是 ipad
我有一个网络应用程序正在运行,让我们说下面的 IP:10.101.10.101。网络应用程序名称是示例,因此整个 URL 如下:https://10.101.10.101/example 现在尝试使用
我想在变量中获取我的计算机的 ipaddress此语句打印我的计算机的 ipaddress但我想把它分配给一个变量我如何从 inet_ntoa(inaddrr(ifr_addr.sa_data)) 中
好吧,这是一个小问题……但仍然令人恼火。 在 MSVS 2008 .NET 3.5 中,我的 IPAdress.Address 很长,我只是使用了 if(subnet == subnetmask.Ad
我正在使用 IPAddress.TryParse 来验证 IP 地址,但是如果我使用 if (IPAddress.TryParse("192.168.1.009", out ip) 它失败了,但是 i
我有一个函数,它使用 IPAddress 类返回给定 IP 地址是否有效。我正在测试它,即使我在没有点作为参数的情况下传递“0123456”或“11111”或“99999”,它也会返回有效(真)。我用
这个问题在这里已经有了答案: Extract ip addresses from Strings using regex (4 个答案) 关闭 4 年前。 我有一个包含多个 IP 地址的大字符串。
我想知道如何从 DhcpInfo.ipAddress 获取人类可读的 IP 地址?棘手的是,它是一个整数,显然你不能用整数存储 IP 地址。那么,IP 地址是如何编码的,它可以存储在一个 int 中?
我可以检查一个 ip 是否在私有(private)网络中吗?
我正在使用 System.Diagnostics.Eventing.Reader.EventLogWatcher 类 Hook 安全事件日志,并且我正在观察 2008 服务器机器上的事件 ID 462
在 .NET IPAddress.HostToNetworkOrder() 中只能接收一个 long int(64 位)并返回一个 long。这适用于 IPv4,但 IPv6 地址是 128 位的。我
我是一名优秀的程序员,十分优秀!