嗨抱歉打扰你们.但我在杂志上读到了一些关于将代码移植到IPV6的内容,所以我试着改变这段代码(socket.AF_INET6,socket.SOCK_STREAM)
在python中它可以工作,但问题是服务器不显示客户端ip.
我希望它能像这样显示出来.得到了连接('127.0.0.1',59815).
但是对于它来说,它搞砸了所有的事情并且给了我这个(从(':: 1',59815,0,0)获得连接),所以如果我问这是客户端IP吗?那两个最后的零(0,0)究竟是什么意思?我该怎么做才能将我的代码移植到IPv6.谢谢我使用python(geany)
所以,如果我这样做(socket.socket(socket.AF_INET6,socket.SOCK_STREAM))我将我的代码放到IPV6,o还有其他一些我需要做的事感谢)
::1
是localhost的IPv6地址,就像localhost 127.0.0.1
的IPv4地址一样.所以,你是看到客户端的IPv6地址.
套接字地址中的字段记录在Python socket
文档中.他们是:
Flowinfo和scope-id是IPv6的新增功能.Flowinfo包含流标签,在RFC 6437中指定.如果你不知道如何使用它,你可以安全地离开它0
.当地址在多个范围内有效时,将使用scope-id.例如,IPv6 链路本地地址在每个IPv6接口上都有效,但是不可能将它们从一个接口路由到另一个接口.因此,如果要与链接本地地址通信,则必须指定要使用的接口.scope-id是接口的编号.
将代码移植到IPv6时,您必须考虑一些事情.处理您的套接字已经更改.您还应该查看名称解析并使用支持IPv4和IPv6的函数(即不使用gethostbyname()但使用getaddrinfo()等.)并且在存储IP地址时不要忘记分配足够的空间.IPv6地址比IPv4地址占用更多空间.
PS:IPy库提供了非常有用的类来处理IP地址.
归档时间: |
|
查看次数: |
877 次 |
最近记录: |