socket编程中InputStream供应的方式效力会不会太低?

 

看了方法都是一个字节一个字节去读取,如果我需要读取指定长度的数据,有没有办法通过缓存的方法来一起读取呢?不想用NIO,据说NIO挺麻烦。如果我要读一个比较大的文件的内容,一个字节一个字节的来读感觉效率很低,有没有别的API好用?能提供缓存机制的。有这方面经验的请说说自己的处理方法。<

可以参考已有的框架Netty - the Java NIO Client Server Socket Framework:http://www.jboss.org/netty


建议你去看看API

顶,

这方面的资料也想知道。

那你用 BufferedInputStream 包装一下呗。

网络传输本身就是一个字节一个字节读取的,不存在效率低的问题。

不知道你是哪个版本JDK。
我用1.5的。Socket.getInputStream 得到的对象是个 SocketInputStream 实例。
而 SocketInputStream 的read(byte[])方法,是一个native方法,是一次性读出的,不是一个字节一个字节读的。

如果不放心的话,又担心NIO麻烦,那么你可以使用NIO的类,但是不使用NIO的框架。
简单说,NIO的socketChannel,同时也支持阻塞式的读写,(而且默认就是阻塞的,要使用非阻塞方式,还必须显示设置),所以你可以用NIO socketChannel的 read(ByteBuffer)方式来一次读入批量数据。

1.5有这个SocketInputStream 实例吗?

也就是通过socket得到getChannel() 然后通过这个来获取吗?这样效率最高?

jdk会设计2个性能迥异的类实现相同功能么?

况且io包就是装饰模式。

需要读取指定长度的数据可以用readFully(byte[] b);

Java code


import java.io.*;
public class Text {

public static void main(String[] args) {
try{
ByteArrayOutputStream b=new ByteArrayOutputStream();
DataOutputStream b1=new DataOutputStream(b);
b1.writeDouble(Math.random());
b1.writeBoolean(true);
ByteArrayInputStream b2=new ByteArrayInputStream(b.toByteArray());
DataInputStream b3=new DataInputStream(b2);
System.out.println(b3.available());
System.out.println(b3.readDouble());
System.out.println(b3.readBoolean());
b1.close();
b3.close();
} catch(IOException ae) {
System.out.println("出错了");
}
}
}


这样是不是会好点?



我也来回答


回答即可得2分,回答被采纳则获得悬赏分以及奖励20分。 匿名回答



socket编程中InputStream供应的方式效力会不会太低? 相关知识库

  • 08-16关于socket编程中inet_ntoa的奇异问题
  • 08-30socket编程中InputStream供应的方式效力会不会太低?
  • 08-13Socket 编程小问题--PrintWriter的flush方式只能刷新一次
  • 12-31c++偏向,进修收集编程(通常为socket编程吧),请高手保举几本书???
  • 08-14Socket编程的一个问题:怎样把不在线的socket毗连给关失落
  • 08-13windows Socket编程和MFC的Socket编程一样吗??
  • 08-08请问Socket编程中,如何在一个法式中同时实现客户端和服务器功能?
  • 12-05我要用php的socket会不会影响全部web的效力?
  • 01-17PHP编程说话中的socket是甚么工具啊
  • 09-14用这类方式来OOP,不知效力会不会更好.
  • 10-10LINUX SOCKET编程connect error!: Socket operation on non-socket
  • 03-29Socket编程中bind()函数毛病问题
  • 04-25SOCKET编程:TCP中如何测试传输的速度
  • 05-01是否是只要iso的sha1与下载处供应的sha1sum中的不异,安装时就不会呈现贫乏文件?
  • 12-01php中的socket编程问题
  • 03-28评论辩论:注册功能中数据有用性验证一般用甚么方式?哪一种方式效力对照高?哪一种方式对照便利?
  • 12-17有无更好的方式在combox中插手check box,我这里供应一种方式!
  • 05-24Socket 编程中,客户端怎么主动获知服务器端 IP
  • 06-07关于socket编程中的疑问
  • 03-23(socket编程)socket 领受数据成功后,显示毗连服务器掉败!
  • 08-04加密的VBSCRIPT履行效力会不会下降呢?一般采取哪一种加密呢?
  • 09-26C#收集编程Socket中线程同步怎么实现?
  • 07-07求 C# InputStream 转 byte[] 的方式
  • 05-24C#中 socket收集编程
  • 08-26在C#的SOCKET编程中怎么去传递如字体之类的信息
  • 10-17java中socket编程新闻传递问题
  • 04-30java socket inputstream 的梗阻问题
  • 06-15inputstream 中 unsigned integer 转成 java中的根基类型
  • 05-07JAVA中有关inputstream中的read方式读取中文乱码的问题
  • 03-30Linux下利用openssl api编程socket编程,为何要编译啊?
php知识库
 
php教程   php168   php100   phpnow   php源码   php mysql   php视频  php图片下载  php正则
绿色php资源
  • 网站开发
  • 数据库开发
  • 开发工具
  • Linux/unix
  • .Net技术
  • Java技术
  • 开发语言
  • Windows专区
Copyright © 2009-2012 phpzyphp资源 绿色php资源 版权所有
PHPZY Website Powered by DedeCMS For PHPZY
豫ICP备07013246号