socket.getInputStream()返回-1,而不阻塞,是什么情况,谢谢? 本帖最后由 yeyongjin 于 2010-04-07 17:26:41 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1. 查看APIpublic InputStream getInputStream() throws IOException返回此套接字的输入流。 如果此套接字具有关联的通道,则所得的输入流会将其所有操作委托给通道。如果通道为非阻塞模式,则输入流的 read 操作将抛出 IllegalBlockingModeException。 在非正常条件下,底层连接可能被远程主机或网络软件中断(例如,TCP 连接情况下的连接重置)。当网络软件检测到中断的连接时,将对返回的输入流应用以下操作: 网络软件可能丢弃经过套接字缓冲的字节。网络软件没有丢弃的字节可以使用 read 读取。 如果没有任何字节在套接字上缓冲,或者 read 已经消耗了所有缓冲的字节,则对 read 的所有后续调用都将抛出 IOException。 如果没有任何字节在套接字上缓冲,并且没有使用 close 关闭套接字,则 available 将返回 0。 关闭返回的 InputStream 将关闭关联套接字。 返回:从此套接字读取字节的输入流。 抛出: IOException - 如果在创建输入流时发生 I/O 错误、没有关闭套接字、没有连接套接字或者使用 shutdownInput() 关闭了套接字输入2. 是否有异常3. 还不行。请发到 [email protected] 这是我的邮箱.. 你没明白API中说明的事情返回值的产生肯定是函数已经运行完毕了那还阻塞个什么劲啊返回值是-1表明有连接但是没输送数据阻塞表示等待传送数据如果你对这些不明白的话你的函数肯定用不对的至少说明你的方法的逻辑是有问题的 你能不能把题目写清楚一点。谁能看得懂啊。socket的另一边可写这别写数据了啊ServlerSocket socket = new ServerSocke(33);socket.getOutputStream(); 你能不能把题目写清楚一点。谁能看得懂啊。socket的另一边可向这边写数据了啊ServlerSocket socket = new ServerSocke(33);socket.getOutputStream(); 在你使用这里的代码调用你的serverInput.read()之前是不是在其他的地方试验下这个函数或者你该检查下自己的代码到底出现什么问题了是否得到了该数据流是否有socket生成 首先,当与服务器端建立连接后,第一次读取数据正常,然后紧接着他就又去读数据下面是第二次读数据日志:2010-04-07 16:50:18,265 [DEBUG] [LongSocketMsgQueue.java] run : 43 -- -----------------------------准备接收OCS消息开始---------------------------lenBuffer[0]-1lenBuffer[1]-1lenBuffer[2]-1lenBuffer[3]-1lenBuffer[4]-1lenBuffer[5]-12010-04-07 16:50:18,265 [DEBUG] [LongSocket.java] run : 62 -- 收到的SOCKET消息长度{HEX}:00FFFFFF2010-04-07 16:50:18,265 [DEBUG] [LongSocket.java] run : 64 -- 收到的消息长度{DEC}: 16777215line[0]-1line[1]-1line[2]-1line[3]-1line[4]-1line[5]-1 SQL 乘法 eclipse下无法创建web项目? 怎么修改数据库配置文件? 不显示删除回复显示所有回复显示星级回复显示得分回复 技术面试过后,HR多久会有通知呀? 请问eclipse+wtp的tomcat发布问题 hibernte的多表对应 配置问题 lcllcl987(毛爷爷)进来接分! 在运行javabean时出现以下问题,是什么原因,各位 送分 开发者上网推荐站点!!! 谁需要scjp考试券请于我联系 报表生成工具
查看API
public InputStream getInputStream()
throws IOException返回此套接字的输入流。
如果此套接字具有关联的通道,则所得的输入流会将其所有操作委托给通道。如果通道为非阻塞模式,则输入流的 read 操作将抛出 IllegalBlockingModeException。 在非正常条件下,底层连接可能被远程主机或网络软件中断(例如,TCP 连接情况下的连接重置)。当网络软件检测到中断的连接时,将对返回的输入流应用以下操作: 网络软件可能丢弃经过套接字缓冲的字节。网络软件没有丢弃的字节可以使用 read 读取。 如果没有任何字节在套接字上缓冲,或者 read 已经消耗了所有缓冲的字节,则对 read 的所有后续调用都将抛出 IOException。 如果没有任何字节在套接字上缓冲,并且没有使用 close 关闭套接字,则 available 将返回 0。 关闭返回的 InputStream 将关闭关联套接字。
返回:
从此套接字读取字节的输入流。
抛出:
IOException - 如果在创建输入流时发生 I/O 错误、没有关闭套接字、没有连接套接字或者使用 shutdownInput() 关闭了套接字输入
2.
是否有异常3.
还不行。请发到 [email protected] 这是我的邮箱..
返回值的产生
肯定是函数已经运行完毕了
那还阻塞个什么劲啊
返回值是-1表明
有连接
但是没输送数据
阻塞表示等待传送数据如果你对这些不明白的话
你的函数肯定用不对的至少说明你的方法的逻辑是有问题的
谁能看得懂啊。
socket的另一边可写这别写数据了啊
ServlerSocket socket = new ServerSocke(33);
socket.getOutputStream();
谁能看得懂啊。
socket的另一边可向这边写数据了啊
ServlerSocket socket = new ServerSocke(33);
socket.getOutputStream();
是不是在其他的地方试验下这个函数
或者你该检查下自己的代码到底出现什么问题了
是否得到了该数据流
是否有socket生成
lenBuffer[0]-1
lenBuffer[1]-1
lenBuffer[2]-1
lenBuffer[3]-1
lenBuffer[4]-1
lenBuffer[5]-1
2010-04-07 16:50:18,265 [DEBUG] [LongSocket.java] run : 62 -- 收到的SOCKET消息长度{HEX}:00FFFFFF
2010-04-07 16:50:18,265 [DEBUG] [LongSocket.java] run : 64 -- 收到的消息长度{DEC}: 16777215
line[0]-1
line[1]-1
line[2]-1
line[3]-1
line[4]-1
line[5]-1