了解 getInputStream 和 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)
我已经使用文件学习了输入和输出流,但我不理解和。我已经谷歌了它,在SO上阅读了它,以及许多不同的书籍和oracle文档。请详细讨论。getinputstream
outputstreams
我知道如何从文件中读取以及如何写入它们,但在这里我不明白传递仅包含字符串的数组的必要性。我想问的是,当在有套接字的输入流时,为什么我们不能直接从中读取呢?究竟什么是套接字 和 ?buf
inputstream
outputstream
我在这里发现了一些东西SO这里是链接“https://stackoverflow.com/questions/12715321/java-networking-explain-inputstream-and-outputstream-in-socket”,这里有一个DNA的答案说
在Java中,要通过套接字发送数据,您可以从中获取一个TransputStream(1),然后写入OutputStream(您输出一些数据)。
这让我感到困惑,当使用exputStream通过套接字发送数据时,out.write(buf)需要什么?为什么我们需要将“google.com”发送到 outputStream?