2011-05-10 122 views
4

我想調整爲IPv4編寫的舊C代碼庫以使用IPv6。我需要更改哪些內容才能使我的C代碼同時適用於IPv4和IPv6?以C代碼從IPV4遷移到IPV6

+0

您使用什麼庫進行網絡連接? – 2011-05-10 11:16:29

+2

問題太模糊。整本書都是這樣寫的。這不僅僅是改變一些API調用的問題。 – Artefacto 2011-05-10 11:19:26

+2

+1來補償downvoters。這個問題並不深刻或模糊。它有一個簡單直接的答案,可能需要大量的工作,具體取決於代碼庫的大小,但它不值得「整本書」。 – 2011-05-10 12:16:11

回答

4

找到使用inet_atoninet_ntoagethostbynamegethostbyaddrhtonlhtonsntohlntohs,以及任何直接sockaddr_in操作和簡單的調用getaddrinfogetnameinfo更換所有代碼。這將使您的代碼更簡單,更易於維護,IPv6將自動工作,無需額外工作。

+0

+1正是史蒂文斯在Unix網絡編程中所說的。 – cnicutar 2011-05-10 11:51:19

+1

您可能需要更改「socket()」調用的位置,因爲它應該使用由getaddrinfo()返回的值而不是硬編碼的地址族和協議號。 – caf 2011-05-10 12:43:09

+0

是的,這也是一個好點。 – 2011-05-10 12:50:14