问题标签 [ipv4]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server - 如何在 SQL Server 的单列中存储 IPv4 或 IPv6?
我应该使用binary(16)
orvarbinary(16)
吗?
我知道我可以使用 getAddress()
in java.net.InetAddress
(Java) 或System.Net.IPAddress
(C#) 来获得 and 的表示byte[]
,但是如果我需要将ie插入到 in的字段中,我是否需要担心填充或任何事情?IPv4
IPv6
IPv4
binary(4)
binary(16)
SQL Server
c# - C# 中的 IPv6 到 IPv4 相互转换
我有一个 IPv4 格式的 IP 列表,这些 IP 是从我的网络服务器收到的以前的 HttpRequest 对象中收集的。我有一个 java 小程序,它提供 Ipv6 格式的 IP 地址(java 小程序返回一堆数据以及 IP 地址)。我需要检查小程序返回的 IP 是否与列表中的任何项目匹配。
如何相互转换 IPv6 和 IPv4 格式?
我的 Web 应用程序基于ASP.Net C#
编辑
这是我面临的问题。Java小程序从客户端返回一堆IP,我假设这取决于客户端机器拥有的网卡数量。
除此之外,我还从 ASP.Net HTTPRequest 对象中获得了一个 IP 地址。我需要找出实际使用哪个 IP 连接到我的网站并执行一些任务。
问题是有时我从 javaapplet 中仅获得一个 IPv6 格式的 IP,而我从 HTTPRequest 对象获得的 IP 是 IPv4 格式,因此比较失败。
c - 试图从 hex(base 16) 传递到 dec 到 ip6 /proc/net/tcp6
我正在读取文件 /proc/net/tcp6 的内容
并试图将 ip6 的符号转换为 '0::1' 之类的
以前使用 ipv4 y 使用下一个方法。
但是对于 ipv6,/proc/net/tcp6 的内容更大(33 个十六进制字符),也许我需要使用 sockaddr_in6,但变量 sin6_addr.s6_addr 是一个数组,而不是单个 log unsigned int(如 sin_addr.s_addr)
所以在简历中。我试图通过这个
类似于
编辑..
嗯,也许如果我将 ex 分解成 16 个 ex 数字并将数组输入 sin6_addr.s_addr。因为 1F00C80A = 10.200.0.31(通过 ntop 函数)
java - 想要同时使用 Inet4Address 和 Inet6Address 的 Java 应用程序
我有一个 Java 应用程序需要通过套接字连接到两台不同机器上的两台不同服务器。一台服务器已配置为侦听 IPv4 连接,而另一台服务器已配置为侦听 IPv6 连接。
现在,假设“host1”是侦听 IPv4 连接的服务器的机器名,而“host2”是侦听 IPv6 连接的服务器的机器名。我需要Inet4Address
为“host1”和Inet6Address
“host2”创建一个到每个服务器的套接字连接,如下所示:
但是,出于向后兼容性的原因,JVM 默认更喜欢使用 IPv4 地址而不是 IPv6 地址。因此,在上面的代码中,第一次尝试连接到“host1”成功,但第二次尝试连接到“host2”失败,因为InetAddress.getByName("host2")
返回的是一个Inet4Address
而不是Inet6Address
.
我知道我可以将系统属性设置java.net.preferIPv6Addresses
为 true 以更喜欢 IPv6 地址而不是 IPv4,但这反过来会导致第二次尝试连接到“host2”成功,但第一次尝试连接到“host1”失败(!)因为InetAddress.getByName("host1")
返回一个Inet6Address
而不是Inet4Address
。
系统属性java.net.preferIPv6Addresses
只被读取一次(参见 InetAddress 行 212-218),因此即使我在将其设置为 true 后将其值更改回 false,它也不会产生任何影响。
那么在这种情况下我能做些什么呢?这似乎是一个普遍的问题,所以肯定已经有一种方法可以做到这一点。
请注意,我当然可以InetAddress.getByAddress()
显式使用和提供每台机器的 IP 地址来取回Inet4Address
and Inet6Address
,但我不想这样做,除非我真的必须这样做。所以请其他解决方案。
哦,我正在使用 java 1.6.0_19 以防万一。
谢谢!
data-structures - IPv6 查找数据结构
patricia trie 是众所周知的推荐数据结构,用于存储 IPv4 分配/分配和执行查找。
IPv6 地址也是如此吗?只是更深/更高的尝试来容纳额外的 96 位?trie 仍然是 patricia,还是不同的 radix trie?
java - Java:URL.openStream() - 使用 IPv4
默认情况下url.openStream();
使用 IPv6。我的学校服务器默默地阻止 IPv6。这会导致url.openStream();
挂起 3 分 15 秒。有没有办法让 url.openStream() 默认使用 IPv4?
php - PHP:在 MySql 中存储 IP 的正确方法以及在数百万行中搜索 IP 的最快方法
我将 IPv4 地址存储在带有 inet_aton 的“int unsigned”列类型中。[我这样做对吗?并且是否需要使用“无符号”?] 这个特定的列也被索引了。由于在整个表中将有数百万行和多行包含相同的 IP,因此搜索这些行的最快方法是什么?
..还是我走错路了?
ipv6 - 用于 omnet++ 的 IPv6 到 ipv4 模块
我正在使用 omnet++ 来模拟两个网络。一个使用 IPv6,另一个使用 ipv4。你们知道是否有任何可用于 omnet++ 的 IPv6 到 IPv4 NAT 模块?到目前为止,我还没有找到任何东西,而且从头开始写一个也不是一件容易的事。
谢谢。
windows - 有没有一种简单的方法可以将 IP 数据包从用户空间 Windows 应用程序路由到网络?
我正在做一个涉及 USB 设备的项目,我们将通过它接收来自远程 pc 的 ip 数据包。我们为远程 pc 分配其 IP 地址。我一直在尝试通过几种方法发送原始 ip 数据包:
1 - 原始套接字:ping 工作正常,发送 tcp 问题
2 - tun/tap W32:我设法让这个工作足以发送 ping 并将 ping 返回到 phy 以太网设备,但无法使用驱动程序 guid 上的 ReadFile(...) 读取它们。
3 - winpcap:ping 正常,出线 tcp 出现在 wireshark 上(所以我假设它正在离开电脑),但我从来没有得到我的 syn 的 ack。我还担心如果我确实得到了一个 ack,windows TCP 堆栈会发送第一个。
我们的目标是实现从客户端 PC 到网络的透明传输。客户端 <-包装的 ip 数据包-> [设备] <-包装的 ip 数据包-> WinPC <- IP -> IpNetwork
我可能会犯这个错误,似乎这应该更容易。
我意识到 windows 可能不是理想的操作系统,但是我无法控制操作系统。
提前致谢
networking - 在本地网络中搜索对等点
我想在我的程序中实现功能,这将使它能够发现在本地网络中运行相同应用程序的主机。为此,我将在我的程序中打开一个 UDP 套接字并在地址 224.0.0.1(使用 IPv4 时)或 ff02::1(使用 IPv6 时)加入多播组。然后我要通知其他主机,我刚刚登录到这个网络。根据我的想法,我有两个问题:
- 这是正确的方法还是有更好的解决方案?
- 在本地网络(例如热点)中使用多播通信的常见策略是什么?通常是可能的还是大多数路由器阻止甚至根本不支持多播通信?
我用 C++ 为 Linux 开发我的应用程序,将来我打算用 C# 为 Windows 编写版本。