C語言網路相關的標頭檔

從網路上找資訊, 最怕的就是找到舊的或錯誤的東西
今兒個找了個範例, 結果遇到無法編譯的問題, 就是因為用的是舊方法

問題主要出在 #include <linux/ip.h> 然後就跳出一堆錯誤:

拿這些訊息去 google 還查不出什麼來, 都是些老舊的文章
後來跑去翻自己以前寫的程式來比對, 才找到真正問題

原因是 linux/ 底下的東西本身是給 kernel 內部使用的
因此開發一般 userland 的程式不應該使用這些
較新的 linux 版本甚至把這些標頭檔也拿掉了

比較正確的作法, 是採用 netinet/ 底下的標頭檔
這是由 POSIX 所規範的標頭檔, 所以用這個開發出來也比較具有移植性
改成使用 netinet/ip.h 以後, 上面遇到的錯誤也就消失了

發佈留言