python socket 的理解(1)
前言
socket的用法简单,但里面的概念有点模糊,记录自己本人的一点理解。
socket层结构图
注意,从此图中看出socket处于tcp和应用层之间。那么它代表啥意思呢?简明的说,数据的传输都是底层协议处理的,跟socket没啥关系。sokcet被抽象成文件,意味着socket就干两件事,读和写。
socket 函数
recv函数
1.接收缓冲区接收数据,如果检测到无数据,或正在接收,就一直等待。
2.当协议接收完毕,recv就copy接收缓冲区的数据到buf,如果recv缓冲区较大,recv要不停的copy几次。
注意:在这里,我们把缓冲区想象成一个完成的文件,recv(100),相当于python open对象方法的read(100),如果文件大小1000,每次读100,下次就会从上一次100处开始继续读。
3.当网络中断,recv返回一个长度为0的字符
总结
参考文献
socket send函数和recv函数详解 https://blog.csdn.net/chenhuajie123/article/details/9149185
简单理解socket https://www.cnblogs.com/dolphinX/p/3460545.html
100行代码实现的tcp反向代理 http://voorloopnul.com/blog/a-python-proxy-in-less-than-100-lines-of-code/