关于socket的疑问

Posted honpey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于socket的疑问相关的知识,希望对你有一定的参考价值。

一直感觉一端发送数据,另一端接受数据很不可思议的事情,如果不能即时地读走会导致什么后果呢?

其实socket读出来的数据,你自己看着办,里面的数据是什么格式你自己去解析,用户可以基于TCP去实现你自己的协议【其实等价于客户基于IP协议去实现自己的传输层协议】,所以可以想想用户是怎么实现http协议的,http协议也是有一个头的,你会读出来一个头,头中会写着后面第几个字段是http协议头,然后第几个字段是数据,然后再第几个字段是option段等等等等,构筑在tcp之上的新的协议,并不是说直接就是数据了

看一段http协议的处理流程就大致知道了嘛,比如nginx,nginx是通过readv去读取数据的(可以参考:ngx_http_wait_request_handler函数中调用recv,recv钩子中封装的是readv函数),可以看到整个协议处理的过程中,都是直接然后挨个字段去分析。所以字节流就是这样子啦。那么对于数据报呢?

如果发送端不断发送数据,然后接收端过了好久才去取,会咋样呢?

数据报协议

以上是关于关于socket的疑问的主要内容,如果未能解决你的问题,请参考以下文章

关于php的socket

TCP连接的部分细节及边界情况分析

TCP连接的部分细节及边界情况分析

求助,求python关于socket协议打包和解包相关方法

Socket通信关于Socket通信原理解析及python实现

关于Socket的一些知识