[英]Understanding getInputStream and getOutputStream
这是一个代码
import java.io.*;
import java.net.*;
public class Whois
{
public static void main(String[] args)
throws Exception
{
// TODO Auto-generated method stub
int c;
Socket s = new Socket("whois.internic.net",43);
*InputStream in = s.getInputStream();
*OutputStream out = s.getOutputStream();
String str = (args.length == 0 ? "osborne.com" : args[0] ) + "\n";
byte buf[] = str.getBytes();
*out.write(buf);
System.out.print("hey baby");
while ((c=in.read()) != -1)
{
System.out.print((char) c);
}
s.close();
}
}
我有显着的,我有问题的理解。我不明白的OutputStream对象的陈述out
将举行当它被分配s.getOutputStream()
什么是合格的需要buf
到out
由out.write(buf)
我已经学会了使用文件输入和输出Streams,但我不了解getinputstream
和outputstreams
。我已经google了它,在SO上以及从许多不同的书和oracle文档中读取它。 请详细讨论。
我知道如何从文件中读取以及如何写入它们。但是在这里我不明白需要传递只保存字符串的buf
数组。我想问的是当in有插槽的输入流时为什么我们不能直接读它呢? 什么是套接字输入inputstream
和outputstream
?
我在这里发现了一些东西,这里是链接“ Java Networking:在Socket中解释InputStream和OutputStream ”,这里的答案由DNA说
在Java中,要通过套接字发送数据,可以从中获取OutputStream(1),并写入OutputStream(输出一些数据)。“
这让我感到困惑,当outputStream用于通过socket发送数据时需要out.write(buf)为什么我们需要将“google.com”发送到outputStream?
您需要了解的第一件事是什么是STREAM
流可以定义为数据序列。 InputStream用于从源读取数据,OutputStream用于将数据写入目标。
****接下来是溪流类型****
we have byte stream and character stream.
classes we have in Input Stream and output stream
顾名思义, 简单来说输入流用于输入数据,输出流用于输出数据
Java 字节流用于执行8位字节的输入和输出。 尽管有许多与字节流相关的类,但最常用的类是FileInputStream和FileOutputStream。 也
Java 字节流用于执行8位字节的输入和输出,其中Java 字符流用于执行16位unicode的输入和输出。 虽然有许多与字符流相关的类,但最常用的类是FileReader和FileWriter ..虽然内部FileReader使用FileInputStream而FileWriter使用FileOutputStream但是主要区别在于FileReader一次读取两个字节而FileWriter写入两个字节一时间
以供参考
getInputStream和getOutputStream的示例
新链接 http://docs.oracle.com/javase/tutorial/essential/io/buffers.html
InputStream in
和OutputStream out
将保存对两种类型流的引用,您可以从中读取数据或将数据写入。 不要指望它们从流本身保存值 - 相反,它们具有使用流的能力。 当您创建这些对象时,您不会发送/接收任何数据 - 您只是获取可用于发送/接收数据的对象。
out.write(buf)
正在发送的内容buf
在插座,以便在插槽的任何读者(你的情况, in
)可以接收数据。 任何数据被发送到out
将在插座的另一侧由可见InputStream
。
这里OutputStream
用于在写出时将数据发送到套接字的另一端。写out.write(buf)
它将在套接字中发送缓冲区数据。
InputStream
用于从套接字接收数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.