您使用了哪些库?它们彼此之间有多兼容?或者您是否编写了自己的解析例程?
我对Java,C++,Python和JavaScript的相互兼容的实现特别感兴趣,它们支持:
::")::ffff:123.45.67.89")/64")所以我需要匹配一个可能有也可能没有掩码的ipv6地址.不幸的是我不能只使用库来解析字符串.
掩码位很容易,在这种情况下:
(?:\/\d{1,3})?$/
Run Code Online (Sandbox Code Playgroud)
困难的部分是ipv6地址的不同格式.它需要匹配::牛肉,牛肉::牛肉::牛肉等.
更新:我快到了..
/^(\:\:([a-f0-9]{1,4}\:){0,6}?[a-f0-9]{0,4}|[a-f0-9]{1,4}(\:[a-f0-9]{1,4}){0,6}?\:\:|[a-f0-9]{1,4}(\:[a-f0-9]{1,4}){1,6}?\:\:([a-f0-9]{1,4}\:){1,6}?[a-f0-9]{1,4})(\/\d{1,3})?$/i
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我仅限于使用perl的正则表达式.
以下是简单的IPv4 UDP广播,然后监听所有接口.
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, True)
sock.bind(("", 1337))
sock.sendto("hello world", ("255.255.255.255", 1337))
while True:
data, addr = sock.recvfrom(0x100)
print "received from {0}: {1!r}".format(addr, data)
Run Code Online (Sandbox Code Playgroud)
我想调整它来发送和接收IPv4和IPv6.
我尽可能多地阅读并尽可能多地阅读并相信以下内容大致是我需要采取的路线:
进一步的信息我可能需要绑定到几个接口,并告诉套接字使用setsockopt()它还应该接收多播数据包.最后getaddrinfo()可以全面使用,以优雅地"退回"到IPv6不可用的IPv4.
我已经实现了很多,但主要是在多播部分上发现了.Python中的完整代码示例,或者对所需常量和地址的生动描述是首选.
有没有人有一些代码可以确定IP地址(IPv4或IPv6)是否与运行应用程序的计算机位于同一子网上?我已经看过很多用IPv4做的代码示例,但我找不到任何支持IPv6的代码.
编辑:
我不确定我是否理解v4和v6之间的所有差异,所以这里有一点我的问题.我有一个为Internet客户端和Intranet客户端提供服务的应用程序,也就是说有些客户端与服务器位于同一物理网络上.所以有时客户端之间有路由器,有时候没有路由器.使用IPv4,我可以通过检查服务器IP地址和子网的客户端IP地址来确定这一点,这样如果我的服务器的IP和子网掩码分别是:
192.168.123.15 255.255.255.0
并且服务器从192.168.123.100接收客户端请求我知道客户端和服务器之间没有路由器.但是,如果服务器收到来自192.168.1.100或67.7.23.4的客户端请求,我知道这些客户端和服务器之间存在路由器.在.Net中,我可以收集客户端和服务器IP地址(v4和v6)但我找不到IPv6子网掩码.
有没有办法在.Net中收集这些信息,还是我误解了IPv4和IPv6之间有什么区别?
编辑x2:
我在MS连接站点上发布了这个,看看它们是否正在处理,或者是否有原因他们没有向UnicastIPAddressInformation类添加IPv6Mask属性.
我也在同一时间在MSDN论坛上发布了同样的问题.1800多个观点,而不是一个回复.猜猜我不是唯一一个对此感到好奇的人.
是否可以通过IPv6(没有WMI)从同一网络中的另一台PC获取MAC?使用IPv4很容易(ARP).
IPv6使用"邻居发现协议"(NDP)来获取MAC地址..Net中有没有这方面的方法?
开发Web应用程序的一个主要(主要)部分是使其具有防滥用性,更具体地说是防垃圾邮件.
我刚刚注意到,今天的反垃圾邮件插件管理请求的形式,填写,提交,并重新提交它(例如,在情况下,CMS询问更多信息,表单数据实际上正在前)......所有来自不同IPv4地址.
首先,两个问题:
那么,对于这个问题的关键:
凭借其几乎无限的地址数量,IPv6是否会让垃圾邮件制造者更容易让网站管理员和网络应用程序开发人员的生活变得悲惨?
也许最终用户都拥有自己的静态IPv6,这对我们来说是件好事,因为我们可以更轻松地阻止机器受损的用户.
或者垃圾邮件发送者可以继续从不同角度攻击我们,从不使用相同的IPv6两次...我不太清楚它在技术上如何工作,特别是因为我甚至不了解它如何与IPv4一起工作.
在最高级别的IPv4地址耗尽的那天,问题或多或少地提出了问题.
我想写一个相当简单的客户端 - 服务器网络应用程序.我只使用纯粹的IPv4网络,但是对于面向未来的代码我会很高兴.我可能会使用TcpListener/TcpClient,因为对WCF的初步调查显示它设置过于复杂并且难以理解.
对于客户端,.NET是否提供了一种工具来自动解码包含IPv4或IPv6地址的字符串(其中IPv4地址包含端口号)?奖励积分,如果它可以解析域名.
对于服务器端,我听说IPv6不使用端口号,那么什么相当于要监听的端口,是否有一种标准方法可以区分IPv4端口号字符串和IPv6等价物?没关系,IPv6服务有16位端口号,就像IPv4服务器一样.
我想使用API调用或注册表编辑添加持久IPv6地址.我目前已经实现了一个使用CreateUnicastIpAddressEntryAPI成功添加IPv6地址的代码,但是当重置适配器或重新启动机器时,IP地址会被破坏(如MSDN文档中所述).
使用IPv4,很容易做到.只需使用AddIPAddressAPI结合注册表项即可获得所需的结果.
我试图在Windows注册表中找到用于保存IPv6地址但没有任何成功的任何条目.MSDN文档建议用来netsh.exe完成任务,但后来我确信netsh.exe正在做一些API调用或注册表项来完成这项任务(微软在任何地方都没有记录).
怎么能实现这一目标?
我意识到已经有很多关于Stack Overflow的问题已经被苹果公司拒绝使用他们的iOS应用程序,因为它们不适用于仅支持IPv6的网络.
我已经检查了我的代码,以确保没有硬编码的IP地址(绝对没有),也没有使用旧的可达性(根本没有)或其他低级网络框架(我们只使用NSURLSession).我已经通过我的机器上的NAT64测试网络,应用程序(似乎)工作正常.
这是一个Xamarin应用程序,它通过HTTPS(而不是其他网络连接)与API通信.
我发现的一些答案表明,此问题的解决方案需要对服务器进行配置更改.
所以我的问题很广泛,需要进行哪些配置更改?更具体地说,您是否需要域名上的AAAA记录?如果是这样,应该如何配置?
作为一名软件开发人员,我更多地解决这个问题,因此没有详细了解IPv6如何工作以及需要哪些服务器更改.
关于Spring boot jar的问题.在生产机器上运行jar时:
java -jar xyz.jar
它不响应我的要求.因为它正在监听ipv6.
但当我运行应用程序为
java -jar xyz.jar -Djava.net.preferIPv4Stack = true -Djava.net.preferIPv4Addresses时
它回应了我的要求.
是生产机器的配置导致应用程序通过ipv6监听,还是有其他原因?
幸运的是
-Djava.net.preferIPv4Stack = true
-Djava.net.preferIPv4Addresses
参数解决了我的问题.但我很困惑!!
注意:Tomcat用作嵌入式服务器.
Spring启动版1.5.4 RELEASE