Вот код
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)
.
Я изучил входные и выходные потоки, используя файлы, но я не понимаю getinputstream
и outputstreams
. Я искал его, читал его здесь как SO, так и из многих разных книг и из документов оракула. пожалуйста, обсудите его подробно.
Я знаю, как читать из файлов и как писать для них. Но здесь я не понимаю, в чем заключается необходимость передачи массива buf
, который содержит только строку. Я хочу спросить, что когда у входной поток сокета, почему мы не можем напрямую читать его?
Что такое сокеты inputstream
и outputstream
?
Я нашел здесь что-то здесь, вот ссылка "Java Networking: Объясните InputStream и OutputStream в Socket", здесь ответ ДНК говорит
В Java, чтобы отправлять данные через сокет, вы получаете из него OutputStream (1) и записываете в OutputStream (вы выводите некоторые данные).
Это меня смущает, когда outputStream используется для отправки данных через сокет, что нужно для out.write(buf), почему нам нужно отправить "google.com" в outputStream?