Galera tenho uma dúvida sobre o envio de streams através de Sockets.
Por exemplo:
Servidor.java
public class Server{
(...)
System.out.println("SERVIDOR INICIADO");
ServerSocket server = new ServerSocket(port);
System.out.println("SERVIDOR ESPERANDO CONEXÕES");
Socket socket = server.accept();
System.out.println("SERVIDOR RECEBEU CONEXÃO");
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
DataInputStream in = new DataInputStream(socket.getInputStream());
String xml= "<?xml version=\"1.0\" encoding=\"utf-8\"?><tag1>Valor 1 RESPOSTA SERVIDOR</tag1></xml>";
out.write(xml.getBytes("UTF-8"));
out.flush();
System.out.println("SERVIDOR EXECUTOU FLUSH");
System.out.println("SERVIDOR ENVIOU XML");
out.close();
in.close();
socket.close();
System.out.println("SERVIDOR FINALIZADO");
(...)
}
Client.java
public class Client{
(...)
Socket socket = new Socket(host, port);
System.out.println("CLIENTE INICIOU");
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
InputStream in = socket.getInputStream();
ByteArrayOutputStream bout = new ByteArrayOutputStream();
int read = 0;
while ((read = in.read()) != -1) {
bout.write(read);
}
bout.flush();
bout.close();
String servidorXml = new String(bout.toByteArray(), "UTF-8");
System.out.println("CLIENTE XML RECEBIDO");
System.out.println(servidorXml);
in.close();
socket.close();
System.out.println("CLIENTE FINALIZOU");
(...)
}
Ao iniciar o Server, ele fica aguardando conexões, quando recebe uma conexão ele envia o “XML” para o Client. Minha dúvida é, porque a String ocntendo o XML só chega realmente ao Server quando o socket é fechado, e não quando chamo o flush do OutPut ?
Valeu.