是否有可能运行Flask来侦听IPv4和IPv6(即双IP堆栈)?虽然我查远就可以在IPv4中使用可执行:使用Flask应用程序中支持双重IPv4和IPv6
app.run(host='::', port=port, debug=True)
app.run(host='0.0.0.0', port=port, debug=True)
或IPv6,但我还没有找到在同一时间在两个运行的方式(它有可能让我的Flask应用程序的一个实例监听IPv4,而另一个实例监听IPv6,但都不能监听同一个端口)。
谢谢!
更新(附加信息):
Followingt桑德Steffann的意见,我也开始了我的应用程序中的IPv6听(谢谢!):
* Running on http://[::]:1028/
* Restarting with reloader
然后用IPv6和IPv4的卷发测试:
分别curl -g [::1]:1028/notify
curl 127.0.0.1:1028/notify
越来越:
::1 - - [10/Feb/2014 12:04:51] "GET /notify HTTP/1.1" 200 -
::ffff:127.0.0.1 - - [10/Feb/2014 12:05:03] "GET /notify HTTP/1.1" 200 -
我对第二行的解释是“有人”(操作系统? Flask依赖的底层网络库?)将IPv4请求转换为IPv6请求。不过,据我所知,是不一样的,在一个经典的双堆栈设置支持IPv4“原生地”,即我本来期望的东西临客这个(这是我所得到的,当我跑我的应用程序(Running on http://0.0.0.0:1028/
)
127.0.0.1 - - [10/Feb/2014 12:05:03] "GET /notify HTTP/1.1" 200 -
如果他们不能监听同一个端口,那么很可能IPv6实例也接受IPv4连接(即V6ONLY关闭)。你能测试这个吗? –
谢谢@SanderSteffann!我已经完成了这个测试,并因此更新了问题的主体。 – fgalan
我在下面添加了一个答案。它回答你的问题吗? –