这是一个代码
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] ) + "
";
byte buf[] = str.getBytes();
*out.write(buf);
System.out.print("hey baby");
while ((c=in.read()) != -1)
{
System.out.print((char) c);
}
s.close();
}
}
我已经标记了我有问题理解的语句.我不明白当分配s.getOutputStream()时,OutputStream对象将保持什么,并且需要通过out.write(buf)将buf传递给out.
我已经学习了使用文件输入和输出Streams,但我不了解getinputstream和outputstreams.I已经google了它,在SO上以及从许多不同的书和oracle文档中读取它.请详细讨论.
我知道如何从文件中读取以及如何写入它们.但是在这里我不明白需要传递只保存字符串的buf数组.我想问的是当in有插槽的输入流时为什么我们不能直接读它呢?
什么是套接字输入流和输出流?
In Java, to send data via the socket, you get an OutputStream (1) from it, and write to the OutputStream (you output some data).”
这让我感到困惑,当outputStream用于通过socket发送数据时需要out.write(buf)为什么我们需要将“google.com”发送到outputStream?