开发者社区> 问答> 正文

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

发起请求的代码:

Java代码 收藏代码

SocketChannel socketChannel = SocketChannel.open();  
socketChannel.connect(new InetSocketAddress("http://www.test.com", 80));

1)如果请求返回的数据总量是1000byte;这时这1000byte是不是已经返回到客户端了?

从SocketChannel中读取数据:

Java代码 收藏代码

int bytesRead = socketChannel.read(buf);

2)如果buf大小是1byte,只执行一次read方法后,那剩余的999byte数据在哪里呢?

展开
收起
长安归故里. 2020-01-07 13:57:55 850 0
1 条回答
写回答
取消 提交回答
  • 1、tcp是流式管道,可能你读取的时候只有一部分数据返回了,一部分还在路上,read返回的时候说明有数据到来或者超时 2、buffer小的话,对端发送的数据可能存在系统tcp协议的缓冲里,直到缓冲区填满

    2020-01-07 13:58:06
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载