inputStream的read(b)方法

问题描述

我写了一个服务器,做了一个输入流的线程,用in.read(b)读取流内容,但是运行一段时间后这个方法一直不停返回-1,一般来说没有数据来这个方法不是会阻塞吗,这是一种什么情况?

解决方案

解决方案二:
读取到末尾而没有可用字节会返回-1
解决方案三:
返回-1说明已经读完数据了,可以停止read操作了!
解决方案四:
关键是一个字节都没读到,而且客户端好像也没发数据过来
解决方案五:
引用3楼cailinj的回复:

关键是一个字节都没读到,而且客户端好像也没发数据过来

没发过来读当然什么都没读到
解决方案六:
没发过来读当然什么都没读到

但是没数据的时候read(b)方法不是出于阻塞状态吗?

时间: 2024-10-22 15:15:27

inputStream的read(b)方法的相关文章

★★★关于InputStream.read(byte[] b)方法★★★

问题描述 我研究了一下read(byte[]b)方法,官方的解释如下从输入流中读取一定数量的字节并将其存储在缓冲区数组b中.以整数形式返回实际读取的字节数.在输入数据可用.检测到文件末尾或者抛出异常前,此方法一直阻塞.如果b为null,将抛出NullPointerException.如果b的长度为0,则无字节可读且返回0:否则,要尝试读取至少一个字节.如果因为流位于文件末尾而没有可用的字节,则返回值-1:否则,至少可以读取一个字节并将其存储在b中.将读取的第一个字节存储在元素b[0]中,下一个存

分享非常有用的Java程序(关键代码)(八)---Java InputStream读取网络响应Response数据的方法!(重要)

原文:分享非常有用的Java程序(关键代码)(八)---Java InputStream读取网络响应Response数据的方法!(重要)   Java InputStream读取数据问题 ====================================================================== 原理讲解  1. 关于InputStream.read()      在从数据流里读取数据时,为图简单,经常用InputStream.read()方法.这个方法是从流里每

InputStream中read()与read(byte[] b)

http://blog.csdn.net/snihcel/article/details/7893097 read()与read(byte[] b)这两个方法在抽象类InputStream中前者是作为抽象方法存在的,后者不是,JDK API中是这样描述两者的:  1:read() : 从输入流中读取数据的下一个字节,返回0到255范围内的int字节值.如果因为已经到达流末尾而没有可用的字节,则返回-1.在输入数据可用.检测到流末尾或者抛出异常前,此方法一直阻塞.  2:read(byte[] b

简单学习Android Socket的使用方法_Android

这方面的知识不是孤立的,其中有关于,Socket编程,多线程的操作,以及I/O流的操作.当然,实现方法不止一种,这只是其中一种,给同是新手一点点思路.如果有什么推荐的话,欢迎指点! 先给大家看一下应用程序的界面,基本就能知道大致的功能了.   activity_main.java <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://sch

简单学习Android Socket的使用方法

这方面的知识不是孤立的,其中有关于,Socket编程,多线程的操作,以及I/O流的操作.当然,实现方法不止一种,这只是其中一种,给同是新手一点点思路.如果有什么推荐的话,欢迎指点! 先给大家看一下应用程序的界面,基本就能知道大致的功能了. activity_main.java <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schem

基于Jave的Web服务工作机制(5)

input = socket.getInputStream(); output = socket.getOutputStream();await于是就创建一个Request对象并调用它的 parse 方法来解析原始的HTTP请求信息.   // create Request object and parse Request request = new Request(input); request.parse(); 接下来,await 方法创建了一个Response 对象,使用setReques

基于java得web服务器实现[Z]

web|web服务|web服务器 基于Java的Web服务器工作原理1 一个 Web 服务器也被称为 HTTP 服务器,它通过 HTTP 协议与客户端通信.这个客户端通常指的是 Web 浏览器.一个基于 Java 的 Web 服务器用到二个重要的类,java.net.Socket 与 java.net.ServerSocket ,并通过 HTTP 消息通信.因此,本文从讨论 HTTP 与这二个类开始,然后我将解释一个与本文相关的简单的 Web 应用. The Hypertext Transfer

asp.net中webservice请求发送原理和过程的初步分析

需求:作为服务方,需要监控每个调用webservice的客户端.需要监控的信息大致如下:客户端的ip,客户端调用了哪个类的哪个方法. 于是自己花了点时间对asp.net的webservice机制作了一下探索. 解决方案: 在接口项目中编写一个所有webservice接口的基类,在此基类的构造方法中,通过分析HttpContext.Current.Request得到想要的信息. 1.ip可以通过HttpContext.Current.Request.UserHostAddress得到 2.调用发哪

[JAVA100例]050、一个简单的Web服务器

import java.io.*; import java.net.*; /** * <p>Title: 发现HTTP内容和文件内容</p> * <p>Description: 获得用户请求后将用户需要的文件读出,添加上HTTP应答头.发送给客户端.</p> * <p>Copyright: Copyright (c) 2003</p> * <p>Filename: Response.java</p> * @ve