发起请求的代码:
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数据在哪里呢?
1、tcp是流式管道,可能你读取的时候只有一部分数据返回了,一部分还在路上,read返回的时候说明有数据到来或者超时 2、buffer小的话,对端发送的数据可能存在系统tcp协议的缓冲里,直到缓冲区填满
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。