首页 > 代码库 > 学习 《UNIX网络编程》

学习 《UNIX网络编程》

学习本书之前,为了了解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.1Tue May 30 21:12:38 2017ue May 30 21:12:38 2017e May 30 21:12:38 2017 May 30 21:12:38 2017May 30 21:12:38 2017ay 30 21:12:38 2017y 30 21:12:38 2017 30 21:12:38 201730 21:12:38 20170 21:12:38 2017 21:12:38 201721:12:38 20171:12:38 2017:12:38 201712:38 20172:38 2017:38 201738 20178 2017 20172017017177
还有乱码

有错误。我是想输出一个字符,而实际输出的是 i 之后的所有字符。原因是 strlen(&buff[i]) 这里写了输出的长度。这里改为 1 就正常了。所以答案是

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

  

 

学习 《UNIX网络编程》