我試圖建立一個私人ipv6網絡與兩臺windows-7機器來測試我的應用程序。我寫了一個示例代碼來測試socket API。我創建了一個IPv6套接字。當我嘗試綁定與鏈路本地地址(這是我從IPCONFIG命令獲得),錯誤代碼爲10049.綁定()到Windows 7中的IPv6地址是錯誤代碼:: WSAEADDRNOTAVAIL(10049)
請告知,爲什麼綁定與IPv6地址失敗在Windows的7機器?
我試圖建立一個私人ipv6網絡與兩臺windows-7機器來測試我的應用程序。我寫了一個示例代碼來測試socket API。我創建了一個IPv6套接字。當我嘗試綁定與鏈路本地地址(這是我從IPCONFIG命令獲得),錯誤代碼爲10049.綁定()到Windows 7中的IPv6地址是錯誤代碼:: WSAEADDRNOTAVAIL(10049)
請告知,爲什麼綁定與IPv6地址失敗在Windows的7機器?
如果您使用的是鏈路本地IPv6地址,你可能需要設置sin6_scope_id
場在結構來表示你要聽哪個接口。鏈接本地地址不明確,因爲every interface must have a link-local address assigned,它們都使用相同的前綴。 (fe80::/64
)
你或許應該bind()
你的監聽套接字到指定的地址(全零或::
),所以這不是一個問題,但它仍然會爲發送端的問題。如果您沒有指定sin6_scope_id
,系統將不知道發送數據包的接口。
爲了避免這個問題,這將是最好的設立,做router advertisements IPv6路由器,這樣你就可以得到global unicast(或者,至少,unique local)地址。
你可以發佈一個小代碼示例來演示你的問題嗎? – Gabe 2011-05-17 07:09:48