我有一個使用ipv4編寫的udp示例程序。如果我將代碼更改爲ipv6,那麼我仍然可以與使用具有ipv4地址的偵聽器的任何人通信?我在是ipv6向後兼容ipv4嗎?
http://ou800doc.caldera.com/en/SDK_netapi/sockC.PortIPv4appIPv6.html
看着移植的例子,我不知道,如果簡單地改變代碼將確保它的工作,或者如果我不得不把它寫在決鬥堆疊模式。
我有一個使用ipv4編寫的udp示例程序。如果我將代碼更改爲ipv6,那麼我仍然可以與使用具有ipv4地址的偵聽器的任何人通信?我在是ipv6向後兼容ipv4嗎?
http://ou800doc.caldera.com/en/SDK_netapi/sockC.PortIPv4appIPv6.html
看着移植的例子,我不知道,如果簡單地改變代碼將確保它的工作,或者如果我不得不把它寫在決鬥堆疊模式。
是和否...... IPv6確實包含完全不同的地址,因此您必須重新編碼您的應用以使用替代標頭和結構大小。
但是,IPv4地址範圍在IPv6內可用,語法是在標準地址之前添加兩個冒號(例如:: 10.11.12.13)。您也可以embed IPv4 addresses within IPv6 packets。
IPv4和IPv6在本質上彼此不兼容。
幾個基本原因:
這些明顯的結果是,如果您打開IPv6套接字,您將無法使用IPv4套接字來收聽它。
不是沒有網絡中IPv4/IPv6 gateway的幫助,即使這樣通信也會受到網絡地址轉換網關引入的typical problems的限制。面向這樣的決策的程序員的傳統建議是建議同時支持IPv4和IPv6。
這是嚴格正確的,但誤導。 IPv6應用程序可以通過多種方式與IPv4主機通信。相反是不正確的。也可以監聽IPv6套接字上來自IPv4應用程序的連接。 – Omnifarious 2009-09-10 20:40:21
這個答案強調錯誤的東西。 – 2010-07-05 15:57:16