Python网络socket编程中AF_INET6地址中scopeid问题

这篇是承接上一篇:

IPV6协议小解-ICMPV6协议分析-PYTHON实现ICMPV6 请求报文(ECHO REQUEST MESSAGE) 

感谢 网友liut提出的问题。 python中socket编程时,ipv6地址是个4-tuple 而不是想ipv4一样,填写地址和端口就完了。

下面贴出我整理的资料:

我查了一下Python3.6.6 的Documentation, 我先贴出来。

他给的提示是,为了兼容性 flowinfo 和 scopeid 两个参数是可以缺省的, 后面提示, 缺省scopeid 参数在操作 scoped IPv6 地址时候会引发错误。
所以我给出的结论是,你的说法是对的,为了避免错误,我应该把后面两个参数都添加上。
然后对于什么是scoped IPv6 address 呢?   flowinfo和scopeid 两个参数又是什么意思呢?我也很好奇, 所以查了查资料。
首先我查了查StackOverflow上面对这两个参数是怎么看的, 下面贴出来我查到的
他说,sin6_flowinfo已经被obesolete, 所以这个参数我不去管它。然后sin6_scope_id呢, it looks like 0 as value is good enough, 所以, 好吧 我也把代码改了改,把sendto的地址改成了4-tuple, 如下:
运行了下, 确实没啥问题。
接着看。
scopeid这个参数是干嘛用的呢?
然后我试了试, 代码如下:
确实需要考虑链路的问题,下面是我修改后的的代码:
感谢liut提出我的问题。 学习了!

暂无评论

发表评论

您的电子邮件地址不会被公开,必填项已用*标注。

相关推荐