Caros Amigos
Estou com o seguinte problema.
Estou trabalhando com socket agora em java, estou migrando aplicações feitas em delphi pra java.
Tenho um aplicação que me retorna uma String Criptograda, de tamanho variavel.
Ou seja, dependendo da informação enviada, o retorno tem um tamanho variavel.
Estou com dificuldade quando essa String (Informação) é muito grande.
Para maior controle, e para poder Descriptografar a informação, mando (recebo) o tamanho da String logo nos primieros Bytes dela.
Mas quando tento Descriptografar elá esta menos do que o Byte de controle mostra.
Gostaria de saber se tem algum metodo de verificar se tda a minha String veio, ou poder informar um tamanho maximo dela.
Pois se informar o tamanho maximo, mesmo ela vindo menor eu consigo fazer a leitura e descriptografia pelo Byte de Controle que vem junto a ela.
Segue abaixo o Codigo que uso para enviar a informação e receber a String do Server
public String EnvSocket(String mens) {
try {
Socket socket = new Socket("10.11.0.30",10642);
String rec=null;
if(socket.isConnected()) {
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
BufferedReader in = new BufferedReader( new InputStreamReader( socket.getInputStream()));
System.out.println("Mens:"+mens);
//out.writeUTF(mens); Tentei usando dessa forma a Informação chega errada do Server (Delphi)
out.writeBytes(mens);
String recebido = in.readLine();
System.out.println("Rec: "+recebido);
rec= Func.ConfMensagem(recebido,true); //DesCriptografa No inicio da String tem o tamanho
System.out.println("Conf: "+rec);
socket.shutdownOutput();
socket.shutdownInput();
in.close();
out.close();
socket.close();
return rec;
}
return "Não foi Possivel Conectar";
} catch (java.io.EOFException eo) {
return "EOFException";
}catch(IOException eio){
return "IOException";
}
}
Também gostaria de saber se da forma que estou fazendo, esta correto ou tem alguma outra forma usando outros metodos.
Obrigado a todos.