1. 程式人生 > >學習 《UNIX網絡編程》

學習 《UNIX網絡編程》

程序設計 times 之間 unix 我們 socket 理解 字符 htm

學習本書之前,為了了解C語言,先通讀了《C程序設計語言》。但對C語言的理解、熟悉可能還是不足,所以在學習本書的過程中,遇到看不懂的C代碼,還要去查詢、思考。

本書一開始,我就遇到了問題,運行不了程序。不知道在 MACOS 上面應該怎麽編譯並使其運行。所以學習編譯並運行C代碼。

OK,現在我們知道如何編譯並運行文件了。

第一章

練習

技術分享

1.3

socket error: Address family not supported by protocol family

1.4

在 while 函數體首行中添加

++bigger_than_zero_times;

1.5

        for (int i=0; i<sizeof(buff); ++i) {
			Write(connfd, &buff[i], strlen(&buff[i]));
		}

計數器輸出的值為 670--740之間,還會變化。原因是什麽?

輸出是這樣

$ ./daytimetcpcli 127.0.0.1
Tue May 30 21:12:38 2017
ue May 30 21:12:38 2017
e May 30 21:12:38 2017
 May 30 21:12:38 2017
May 30 21:12:38 2017
ay 30 21:12:38 2017
y 30 21:12:38 2017
 30 21:12:38 2017
30 21:12:38 2017
0 21:12:38 2017
 21:12:38 2017
21:12:38 2017
1:12:38 2017
:12:38 2017
12:38 2017
2:38 2017
:38 2017
38 2017
8 2017
 2017
2017
017
17
7
還有亂碼

有錯誤。我是想輸出一個字符,而實際輸出的是 i 之後的所有字符。原因是 strlen(&buff[i]) 這裏寫了輸出的長度。這裏改為 1 就正常了。所以答案是

        for (int i=0; i<sizeof(buff); ++i) {
			Write(connfd, &buff[i], 1);
		}

  

 

學習 《UNIX網絡編程》