我有一個ipv4服務器,只接受本地主機上的連接(使用INADDR_LOOPBACK
)。我想將此服務器轉換爲雙棧ipv6/ipv4。但是,使用in6addr_loopback
只接受連接到::1
。本地主機上的雙棧ipv6/ipv4
我發現我可以同時使用in6addr_any
同時接受ipv4和ipv6連接,但由於這也允許來自任何地方的連接對我的特殊情況無用。
是否可以同時綁定到ipv6 localhost(::1
)和ipv4 localhost(127.0.0.1
)?
我有一個ipv4服務器,只接受本地主機上的連接(使用INADDR_LOOPBACK
)。我想將此服務器轉換爲雙棧ipv6/ipv4。但是,使用in6addr_loopback
只接受連接到::1
。本地主機上的雙棧ipv6/ipv4
我發現我可以同時使用in6addr_any
同時接受ipv4和ipv6連接,但由於這也允許來自任何地方的連接對我的特殊情況無用。
是否可以同時綁定到ipv6 localhost(::1
)和ipv4 localhost(127.0.0.1
)?
AFAIK,這是不可能的。
你需要做的是創建兩個套接字,一個綁定到INADDR_LOOPBACK,一個綁定到in6addr_loopback。然後,您可以同時使用您選擇的多路複用器(輪詢,選擇,epoll等)來等待它們兩者。
更新
就想出了你可能要考慮一些變通。在這兩種解決方法中,您都綁定到in6addr_any
。
這就是我的想法,但我想確保。謝謝。 – paleozogt
有些人可能會從127.1.0.1連接,這仍然是本地始發的流量 – akostadinov
僅僅因爲你的服務器是雙棧,你的本地主機應用程序真的需要嗎?你可以隨便挑一個嗎?
這需要去serverfault –
據我所知,ServerFault是一個IT/SysAdmin類型的網站。這是一個編程(套接字API)問題。 – paleozogt