进击的巨人
C语言除了大学的一点基础就没有了,所以课程学的过程在代码这块比较吃力,学完后,依然不会用C写网络编程,不过没关系,对网络编程的底层实现与思想有了很深刻的认识,这样对上层网络框架如netty的理解有很大帮助,感谢老师
作者回复:感谢一路相伴。
2020-11-15
5
Jason
老师,你讲的真好,循序渐进,深入浅出,让我对懵懂的网络编程技术真正有了系统化的理解,收获颇丰。我想给你一个大大的拥抱,甚至想亲你一口。
作者回复:你太热情了☺️
2020-07-15
4
功夫熊猫
谢谢老师,以前感觉都只是一知半解,但是现在对大多数的设计思路有了很清楚认识。让我明白了一个道理,如果要进入某个领域的话,就先看看这个领域的大佬的作品,这是提升的最快方式了。最近看sqlite3也是这种感觉,以前感觉数据库好难呀,现在有了大体认识后,就感觉简单多了,数据库感觉就是字符串的解析和以及磁盘与内存的交互。
2022-07-30
1
stark
看了第二遍,终于搞懂了网络上的一点知识,算是入门吧,本篇课程前部分写的是Tcp/Ip网络,后半部分写的是网络I/O的知识,很基础,收益很大,感谢老师!
作者回复:感谢相伴~
2022-02-24
J.M.Liu
虽然落后了好几天才把专利跟完,但是收获真的很大。以前对网络编程的底层API总是一知半解,网上看的资料也是零零散散不成体系,《unix网络编程》一类的砖头又有点让人望而却步。学完专栏之后,自己也能对一次IO的整体流程在脑子里生成一张比较完整的路径图了。尤其是最后的实战篇,感觉真的很棒,共享的代码很值得继续研究。感谢老师。
作者回复:达到了我的初衷,感谢分享。
2019-11-03
5
null
原文:
那么非阻塞 I/O 呢?…,这个过程中,你没有被阻塞,而是在不断轮询。
但轮询的效率太低了,于是你向老板提议:“老板,到货给我打电话吧,我再来付钱取书。”这就是前面讲到的 I/O 多路复用。
以下代码片段,摘自前面两节课,当 select/poll 的 time 参数设置为 0,也是非阻塞立刻返回,然后不断轮询调用 select/poll 函数。这不就和非阻塞 I/O 描述的是一样:立刻返回+轮询。
是不是说 select/poll 可以处理多条“链路”,而非阻塞 I/O 只处理一条链路。还是说这两个概念不是一回事,水果和动物不能混为一谈。
请问老师,是我哪里理解错了么?谢谢!
select/poll 多路复用代码段:
for (;;) {
readmask = allreads;
int rc = select(socket_fd + 1, &readmask, NULL, NULL, NULL);
}
for (;;) {
if ((ready_number = poll(event_set, INIT_SIZE, -1)) < 0) {
error(1, errno, "poll failed ");
}
}
作者回复:select和poll是让操作系统在有I/O实际时再从调用中返回,而且本质上select和poll都是在等待多种I/O事件,和前面每次轮询单个I/O事件是否就绪,有天壤之别。
2021-04-09
1
Geek_613829
我非科班研二,希望学好基础的前提下能深入学习Linux网络并发编程,最后成为一个技术小leader!
作者回复:加油~
2021-01-20
1
金鑫
哭泣,这篇讲的超级清楚,之前模糊的点都踩到了。
作者回复:嗯,哭吧哭吧不是罪:)
2020-12-15
夏雨
既然是本地套接字不走网路协议, 那本地套接字的TCP 和 UDP 又有什么去别, UDP在缓存里也不会丢包乱序。
作者回复:好问题。我是这么理解的,在本地套接字情况下,所谓SOCK_STREAM和SOCK_DGRAM是指编程方式和非本地套接字下的TCP、UDP一致。
2020-06-24
1
even
工作3年多,C++后端开发,用过zmq,但对网络编程的很多原理不甚理解,看《unix网络编程》又会一个头两个大,希望通过这个专栏能提高对网络编程的认知,立个flag,要研读老师的每一篇文章,跟着老师的代码重新敲一遍,运行,调试,理解!
作者回复:加强~
2020-04-17
编辑推荐
包含这门课的学习路径
Go工程师
16门课程 89.9w人学习
后端工程师
27门课程 184.1w人学习
C++工程师
7门课程 51.5w人学习
看过的人还看了