码迷,mamicode.com
首页 > 其他好文 > 详细

关于socket的疑问

时间:2018-03-31 22:21:50      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:过程   发送   等等   协议   字节流   and   读取数据   读取   传输层   

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

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

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

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

数据报协议

关于socket的疑问

标签:过程   发送   等等   协议   字节流   and   读取数据   读取   传输层   

原文地址:https://www.cnblogs.com/honpey/p/8684292.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!