2011-10-30 47 views
5

我想下載並在Linux上運行c代碼unix網絡編程書籍代碼由於舊的操作系統而存在缺陷,如何解決這個問題或從哪裏獲得新代碼?

UNIX網絡編程,第1卷,第二版:網絡API:Sockets和XTI,Prentice Hall,1998,ISBN 0-13-490012-X。它是由W·史蒂文斯理查德

http://kohala.com/start/unpv12e/unpv12e.tar.gz 

但是,當我建立的代碼,我得到了錯誤:

gcc -g -O2 -D_REENTRANT -Wall -c -o connect_nonb.o connect_nonb.c 
    In file included from connect_nonb.c:1: 
    unp.h:114: error: redefinition of âstruct in_pktinfoâ 
    make: *** [connect_nonb.o] Error 1 

我註釋掉結構in_pktinfo。然後我得到新的錯誤:

gcc -g -O2 -D_REENTRANT -Wall -c -o in_cksum.o in_cksum.c 
    gcc -g -O2 -D_REENTRANT -Wall -c -o inet_ntop.o inet_ntop.c 
    inet_ntop.c: In function âinet_ntopâ: 
    inet_ntop.c:61: error: argument âsizeâ doesnât match prototype 
    /usr/include/arpa/inet.h:67: error: prototype declaration 
    make: *** [inet_ntop.o] Error 1 

我不想一個接一個調試整個575個文件。

哪裏可以得到沒有這些錯誤的新代碼?新版本的書有無錯代碼?

舊代碼僅適用於舊操作系統。

感謝

+0

我建議你下載代碼並在投票前在linux上進行編譯。 – user1002288

+4

也許[第三版](http://www.unpbook.com/)的[源代碼](http://www.unpbook.com/src.html)會更好。 –

+0

@Jerry Coffin:你碰巧知道第三版代碼是否適用於最近的ubuntu發行版 - 在可能只添加了正確的include目錄位置之後?上述可能發生的結構史蒂文斯定義或使用已被取代。嚴重的問題:目前正在閱讀他的TCO/IP經典,發現它很輝煌(畢竟這些年來),並考慮在最新版本中購買上述版本 - 這仍然很古老。 – gnometorule

回答

11

好,Author Richard Stevens於1999年去世,這本書仍然是一個很好的參考。對於超過10年的技術參考文獻,你不能說這些。

我剛剛從http://www.unpbook.com/unpv13e.tar.gz取出源,並遵循自述,這基本上意味着運行的./configure,並呼籲使

/lib 
/libfree 
/intro 

我固定在一個地方(libfree/inet_ntop目錄.c:60並更改爲大小socklen),並在我目前的Ubuntu上編譯。我沒有運行它,但我相信至少它的大部分工作。

理查德·史蒂文斯書依然突出,值得它需要保持他的消息來源運行小的努力。

+6

應該注意:在第60行,將** size_t **更改爲** socklen_t ** ...愚蠢的錯誤,但我認爲Jörg指的是變量名稱,而不是類型! – Nico

相關問題