请问:什么情况下返回0,什么情况下返回-1.
TCP/IP不太熟悉,请教各位,希望详细一点。
关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率

首页/
已采纳
关于NIO里面SocketChannel read方法 返回值问题
收起
- 写回答
- 好问题 0 提建议
- 关注问题
微信扫一扫
点击复制链接分享
- 邀请回答
- 编辑 收藏 删除 结题
- 收藏 举报
1条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
wanghaolovezlq 2009-09-01 08:28关注将字节序列从此通道中读入给定的缓冲区。
尝试最多从该通道中读取 r 个字节,其中 r 是调用此方法时缓冲区中剩余的字节数,即 dst.remaining()。假定读取的字节序列长度为 n,其中 0 <= n <= r。此字节序列将被传输到缓冲区中,序列中的第一个字节位于索引 p 处,最后一个字节则位于索引 p + n - 1 处,其中 p 是调用此方法时缓冲区的位置。返回时,该缓冲区的位置将等于 p + n;其限制不会更改。
读取操作可能不填充缓冲区,实际上它可能根本不读取任何字节。是否如此执行取决于通道的性质和状态。例如,处于非阻塞模式的套接字通道只能从该套接字的输入缓冲区中读取立即可用的字节;类似地,文件通道只能读取文件中剩余的字节。但是可以保证,如果某个通道处于阻塞模式,并且缓冲区中至少剩余一个字节,则在读取至少一个字节之前将阻塞此方法。
可在任意时间调用此方法。但是如果另一个线程已经在此通道上发起了一个读取操作,则在该操作完成前此方法的调用被阻塞。
[color=red]
如果该通道中没有数据,则返回0
如果该通道已到达流的末尾,则返回 -1 [/color]
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
编辑预览轻敲空格完成输入- 显示为
- 卡片
- 标题
- 链接
评论按下Enter换行,Ctrl+Enter发表内容
编辑
预览

轻敲空格完成输入
- 显示为
- 卡片
- 标题
- 链接
报告相同问题?
提交
- 2013-10-30 12:02回答 2 已采纳 1、tcp是流式管道,可能你读取的时候只有一部分数据返回了,一部分还在路上,read返回的时候说明有数据到来或者超时 2、buffer小的话,对端发送的数据可能存在系统tcp协议的缓冲里,直到缓冲区
- 2017-12-18 02:31回答 3 已采纳 ``` 服务器端的buf的write是需要循环的 ```
- 2017-08-08 06:26回答 3 已采纳 注册`SelectionKey.OP_READ` 事件需要接受了`SelectionKey.OP_ACCEPT`的`ServerSocketChannel ` 进行`accept`才可以。具体查看下面
- 2014-12-01 07:48爱佳男士的博客 不会返回0,阻塞方式的socketChannel,若没有数据可读,或者缓冲区满了,就会阻塞,直到满足读的条件,所以一般阻塞方式的read是比较简单的,不过阻塞方式的socketChannel的问题也是显而易见的。这里我结合基于NIO ...
- 2010-12-27 04:18回答 2 已采纳 1. socketchannel也设置成nonblocking,试试 2. 在serversocket里面设置超时时间 3. 这可能跟这种混用有关系。 因为selector是跟channe
- 2022-05-07 14:11回答 2 已采纳 一个是t开头,一个是tb开头?
- 2023-03-30 09:06回答 2 已采纳 确保请求参数是否正确!看一下您的请求参数
- 2019-06-18 05:21P19777的博客 接触NIO时间较短,如果不对希望大家帮忙纠正。 写这个文章之前在网上很多博客上看了以下,发现他们很多的都是错的(自己代码实验发现是错误的) 1.返回-1的情况 返回-1是因为客户端主动关闭了channel,注意是主动...
- 2017-10-19 19:23回答 2 已采纳 只需要在服务端建立一个serverSocketchannel,客户端多channel用于测试。
- 2022-06-19 06:17回答 2 已采纳 数据库连接有问题,检查驱动,账号密码等等
- 2020-08-11 03:49保暖大裤衩LeoLee的博客 Java NIO中的SocketChannel是一个连接到TCP网络套接字的通道,是一种面向流连接只sockets套接字的可选择通道,特点如下: SocketChannel是用来连接Socket套接字 SocketChannel主要用途用来处理网络I/O的通道 ...
- 2018-02-18 13:22街灯下的小草的博客 Java NIO中的SocketChannel是一个连接到TCP网络套接字的通道。如下2种方式创建SocketChannel: 1)打开一个SocketChannel并连接到互联网上的某台服务器。 2)一个新连接到达ServerSocketChannel时,会...
- 2016-09-20 02:20weixin_33716154的博客 转载地址... ...不会返回0,阻塞方式的socketChannel,若没有数据可读,或者缓冲区满了,就会阻塞,直到满足读的条件,所以一般阻塞方式的read是比较简单的,不过阻塞方式的socketChannel的问题也...
- 2021-03-13 15:48凡斯的博客 Java NIO中的SocketChannel是一个连接到TCP网络套接字的通道。可以通过以下2种方式创建SocketChannel:打开一个SocketChannel并连接到互联网上的某台服务器。一个新连接到达ServerSocketChannel时,会创建一个...
- 没有解决我的问题, 去提问
联系我们(工作时间:8:30-22:00)
400-660-0108kefu@csdn.net在线客服
- 京ICP备19004658号
- 经营性网站备案信息
公安备案号11010502030143
- 营业执照
- 北京互联网违法和不良信息举报中心
- 家长监护
- 中国互联网举报中心
- 网络110报警服务
- Chrome商店下载
- 账号管理规范
- 版权与免责声明
- 版权申诉
- 出版物许可证
- ©1999-2025北京创新乐知网络技术有限公司