为了账号安全,请及时绑定邮箱和手机立即绑定

关于nio中的SocketChannel.read()方法原理

关于nio中的SocketChannel.read()方法原理

慕丝7291255 2019-03-07 22:19:41
发起请求的代码:SocketChannel socketChannel = SocketChannel.open(); socketChannel.connect(new InetSocketAddress("http://www.test.com", 80));1)如果请求返回的数据总量是1000byte;这时这1000byte是不是已经返回到客户端了? 从SocketChannel中读取数据:int bytesRead = socketChannel.read(buf); 2)如果buf大小是1byte,只执行一次read方法后,那剩余的999byte数据在哪里呢?
查看完整描述

2 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

1、tcp是流式管道,可能你读取的时候只有一部分数据返回了,一部分还在路上,read返回的时候说明有数据到来或者超时
2、buffer小的话,对端发送的数据可能存在系统tcp协议的缓冲里,直到缓冲区填满

查看完整回答
反对 回复 2019-04-30
  • 2 回答
  • 0 关注
  • 2434 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信