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/

原文地址:https://www.cnblogs.com/whf191/p/9447922.html