содержимое buf - google.com в байтовом формате. так что мой вопрос, что будет "в" читать? \ Понимание 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();
}
}
Я отметил утверждения, что у меня проблемы с пониманием. Я не понимаю, что такое объект OutputStreamout
будет держать, когда он назначенs.getOutputStream()
и какова необходимость прохожденияbuf
вout
отout.write(buf)
.
Я изучил потоки ввода и вывода, используя файлы, но я не понимаю,getinputstream
а такжеoutputstreams
Я его погуглил, почитайте здесь на SO, а также из множества разных книг и из документов оракула. пожалуйста, обсудите это подробно.
Я знаю, как читать из файлов и как писать в них. Но здесь я не понимаю, зачем нужно передаватьbuf
массив, который содержит только строку. Что я хочу спросить, так это то, что когда in имеет входной поток сокета, почему мы не можем просто читать из него? Что такое сокетыinputstream
а такжеoutputstream
?
Я нашел что-то здесь на ТАК вот ссылка "Сеть Java: объяснение InputStream и OutputStream в сокетездесь ответ ДНК говорит
В Java для отправки данных через сокет вы получаете из него OutputStream (1) и записываете в OutputStream (вы выводите некоторые данные). "
Меня это смущает, когда outputStream используется для отправки данных через сокет, зачем нужен out.write (buf), зачем нам отправлять google.com в outputStream?