los contenidos de buf son google.com en formato byte. entonces mi pregunta es ¿qué leerá "in"? \ Comprender getInputStream y getOutputStream
Aquí hay un código
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();
}
}
He marcado las declaraciones que tengo problemas para entender. No entiendo qué objeto OutputStreamout
se mantendrá cuando sea asignados.getOutputStream()
y cual es la necesidad de pasarbuf
aout
porout.write(buf)
.
Aprendí Streams de entrada y salida usando archivos pero no entiendogetinputstream
youtputstreams
Lo he buscado en Google, léalo aquí en SO, así como en muchos libros diferentes y también en documentos de Oracle. por favor discuta en detalle.
Sé cómo leer archivos y cómo escribirles, pero aquí no entiendo cuál es la necesidad de pasarbuf
matriz que contiene solo una cadena. Lo que quiero preguntar es que cuando tiene el flujo de entrada del zócalo, ¿por qué no podemos leer directamente de él? ¿Qué es exactamente un zócalo?inputstream
youtputstream
?
Encontré algo aquí en SO, aquí está el enlace "Redes Java: explique InputStream y OutputStream en Socket", aquí una respuesta de ADN dice
En Java, para enviar datos a través del socket, se obtiene un OutputStream (1) y se escribe en el OutputStream (se generan algunos datos) ".
Esto me confunde, cuando outputStream se usa para enviar datos a través del socket, ¿cuál era la necesidad de out.write (buf)? ¿Por qué necesitamos enviar "google.com" a outputStream?