本人对 NIO 的理解程度有限,网上的资料又不够详细,很多东西都搜不到,所以在此问问各位大神,如果兴趣的话还望指教。 谢谢啦。
此时 selector 会把 read 状态的 channel 给获取到 并进入迭代, 这个 channel 里包含本次请求的所有报文吗? 注意是本次请求。
会不会因为网络原因或者其他常见原因 导致数据有断层,比如客户端发送了 1234,但是 channel 里是 12 34.从而导致读 channel 的时候在断层处 返回 0,而导致读取停止?
假如有这样一个 http 报文
POST /demo HTTP/1.1
content-type:application/json
content-length:1000
12345678910qwertyuioasdfghjkl
我以分两片为例子。
分片传输是将报文分为这样的两份( A )?
第一片
POST /demo HTTP/1.1
content-type:application/json
content-length:50
12345678910qwer
第二片
POST /demo HTTP/1.1
content-type:application/json
content-length:50
tyuioasdfghjkl
还是这样的两份( B )?
第一片
POST /demo HTTP/1.1
content-type:application/json
content-length:100
12345678910
第二片
qwertyuioasdfghjkl
如果是 B 的分法,那么 NIO 在收到第二片之后,丢给协议层,这个数据里没有任何特征,协议层是怎么判断出这个报文属于什么协议,从而给对应的协议解析器来进行解析的呢?
我现在是根据报文里的特征来分析的,感觉不太对劲。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.