2011-09-20 84 views
5

我正在運行「cabal install & & yesod devel」使用yesod 0.9.2.2,但它只能使用ipv6偵聽。有誰知道如何配置它以監聽ipv4嗎?我在Windows 7上運行Yesod開發服務器只監聽ipv6

感謝

+0

您是否嘗試瀏覽「localhost」?我已經多次使用''yesod devel'',並且它工作正常,而且我的電腦沒有什麼特別之處。 –

+1

那麼,如果我只是在本地主機上工作,但我們的網絡沒有啓用ipv6,所以遠程計算機無法瀏覽到我的網站。看看netstat,我可以看到它只能監聽我的ipv6地址,而不是ipv4 – Caleb

+0

@Caleb:開發服務器被設計爲在本地使用。你有沒有檢查這是否也發生在生產服務器上? (做'cabal configure -fproduction')。 – hammar

回答

2

你描述迄今已在BSD和Debian所觀察到的症狀,但它看起來像Windows也受到影響。

這是Yesod的一個已知問題,或者實際上與Wasp,或者更確切地說,與網絡庫有關。在這個問題上需要跟進的一個地方是this githup issuecurrent discussion on haskell-lists,部分原因是您的問題。

+0

謝謝,我會密切關注這些。 – Caleb

0

儘管我目前沒有類似的設置來測試此功能,但您可能會發現,如果某些設備正在偵聽IPv6端口X,並且在IPv4的同一端口X上沒有監聽任何設備,則IPv6端口將會接收連接。 IPv6服務器將看到來自「IPv6」address :: ffff:1.2.3.4的連接(這稱爲IPv4映射IPv6地址)。內核提供IPv6和IPv4端點之間的轉換。通過電線使用IPv4。

我不知道有關Windows 7,但有些系統(如一些 Linux發行版),將默認設置一個特定的sysctl,這意味着服務器將需要綁定到單獨的IPv4禁用此功能和IPv6套接字(這是我的經驗,更好的選擇)。應用程序可以自由覆蓋此默認行爲。