最近在學習《UNIX網絡編程》,書上將經常使用的頭文件都放在unp.h裏,須要本身編譯一下代碼搭建環境。html
$ ./configure $ cd lib $ make $ cd ../libfree $ make
此時,會在unpv13e文件夾下產生一個libunp.a的庫文件編程
$ cd ../intro # build and test a basic client program $ make daytimetcpcli $ ./daytimetcpcli 127.0.0.1
成功以後會顯示以下:bash
$ ./daytimetcpcli 127.0.0.1 02 MAY 2015 12:05:03 CST
$ gcc daytimetcpcli.c -lunp
出現以下報錯:網絡
inet_ntop.c:61: error: argument 'size' doesn't match prototype /usr/include/arpa/inet.h:153: error: prototype declaration
處理:
修改libfree文件夾下的inet_ntop.c第61行 size_t size ->改爲 socklen_t sizetcp
出現以下報錯:學習
[root@localhost intro]# ./daytimetcpcli 127.0.0.1 connect error: Connection refused
處理:測試
disable yes
爲disable no
$ /etc/xinetd.d/ restart
$ netstat -ant
開啓daytime服務後,會有13這個端口ui
tcp 0 0 0.0.0.0:13 0.0.0.0:* LISTEN
出現以下報錯:prototype
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] 錯誤 1
處理:
結構in_pktinfo已經包含在標準頭文件bits/in.h中了, 它又經過 netinet/in.h 在unp.h中被包括進來. 只要將 unp.h 中的結構定義comment out註釋掉,而後從新編譯libunp.arest