《UNIX網路程式設計卷1》第一例及問題

2021-07-27 19:44:15 字數 2742 閱讀 3468

《unix網路程式設計卷1》一上來就給了乙個例子,新手不容易看懂,估計作者也沒有打算讓人看懂,作了詳盡的解釋。新手都想執行這個程式,我也是。

首先,給的程式都是在unix下執行的。這裡有全書**。

我的環境是vmware workstation 12.5.0+ubuntu 16.04 lts,已經裝了gcc。

tsc@tsc

:~/bin/unpv13e/unpv13e

$ ./configure

checking build system type... x86_64-unknown-linux-gnu

checking host system type... x86_64-unknown-linux-gnu

checking for gcc... gcc

......

tsc@tsc

:~/bin/unpv13e/unpv13e

$ cd lib

tsc@tsc

:~/bin/unpv13e/unpv13e/lib

$ make

...tsc@tsc

:~/bin/unpv13e/unpv13e/lib

$ cd ../libfree

tsc@tsc

:~/bin/unpv13e/unpv13e/libfree

$ make

gcc -i../lib -g -o2 -d_reentrant -wall -c -o inet_ntop.o inet_ntop.c

inet_ntop.c:

in function 『inet_ntop』:

inet_ntop.c:60:

9:error: argument 『size』 doesn』t match prototype

size_t size;

^in file included from inet_ntop.c:27:

0:/usr/include/arpa/inet.h:64:

20:error: prototype declaration

extern const char *inet_ntop (int __af, const void *__restrict __cp,

^: recipe for target 'inet_ntop.o' failed

make: *** [inet_ntop.o] error

1tsc@tsc

:~/bin/unpv13e/unpv13e/libfree

$ cd ../libroute

tsc@tsc

:~/bin/unpv13e/unpv13e/libroute

$ make

gcc -i../lib -g -o2 -d_reentrant -wall -c -o get_rtaddrs.o get_rtaddrs.c

in file included from get_rtaddrs.c:1:

0:unproute.h:3:

45: fatal error: net/if_dl.h: 沒有那個檔案或目錄

compilation terminated.

: recipe for target 'get_rtaddrs.o' failed

make: *** [get_rtaddrs.o] error

1tsc@tsc

:~/bin/unpv13e/unpv13e/libroute

$ cd ../libxti

bash:

cd: ../libxti: 沒有那個檔案或目錄

tsc@tsc

:~/bin/unpv13e/unpv13e/libroute

$ cd ../intro

tsc@tsc

:~/bin/unpv13e/unpv13e/intro

$ make daytimetcpcli

tsc@tsc

:~/bin/unpv13e/unpv13e/intro

$ ./daytimetcpcli 127.0.0.1

connect error:

connection refused

可以看到提示了錯誤connect error: connection refused,這裡有討論這個錯誤的。接下來:

tsc@tsc

:~/bin/unpv13e/unpv13e/intro

$ make daytimetcpsrv

gcc -i../lib -g -o2 -d_reentrant -wall -c -o daytimetcpsrv.o daytimetcpsrv.c

gcc -i../lib -g -o2 -d_reentrant -wall -o daytimetcpsrv daytimetcpsrv.o ../libunp.a -lpthread

tsc@tsc

:~/bin/unpv13e/unpv13e/intro

$ sudo ./daytimetcpsrv

參考:make的作用

tsc@tsc

:~/bin/unpv13e/unpv13e/intro

$ ./daytimetcpcli 127.0.0.1

frimar320

:37:48

2017

可以看到,給出了系統當前時間,第一例執行成功。

Unix 網路程式設計卷1

伺服器被動開啟 passive open socket bind listen。客戶端通過socket connect主動開啟 active open accept和connect是阻塞的 把目標位元組串指定數目的位元組置為c void memset void dest,int c,size t l...

UNIX網路程式設計卷1 第1章 簡介

要編寫通過計算機網路通訊的程式,首先要確定這些程式相互通訊所用的協議。一般認為web伺服器程式是乙個長時間執行的程式 守護程式,daemon 它只在響應來自網路的請求時才傳送網路訊息。協議的另一端是web客戶程式,如某種瀏覽器,與伺服器程序的通訊總是由客戶程序發起。在設計網路應用時,確定總是由客戶發...

UNIX網路程式設計 UNP 卷2 第一章

今天開始拜讀unp這部神作了 第一章主要是簡介內容,包括對經典ipc和同步機制的描述。雖然卷2主要是講解ipc的,但這個ipc包括了平常所說的程序間通訊和同步。pipe fifo message queue mutex locks semaphores shared memory rpc socke...