Estoy trabajando con sockets y tengo un problema, abro la conexión y envío una cadena de caracteres, luego intento leer la respuesta y es ahí donde me da el error: nunca llega la respuesta, el programa lanza una excepción de timeout... alguien me puede ayudar? existe algo especial que tomar en cuenta al usar readUTF()?
Código del método donde hago el proceso:
Código PHP:
public ArrayList SendMessage(String strMessage) {
ArrayList arlResultado = new ArrayList();
RespuestaUtil ruResultado = null;
String strResponseLine = null;
String strTrama = "";
String strTransaccion = strMessage.substring(163, 167);
OpenSocket(Constantes.strHostName,
Constantes.strPortNumber);
if (this.getSktClientSocket() != null && this.getDosOutput() != null &&
this.getDisInput() != null) {
try {
this.getDosOutput().writeUTF(strMessage);
while ((strResponseLine = this.getDisInput().readUTF()) != null) {
System.out.println("Server: " + strResponseLine);
if (strTransaccion.equals(Constantes.strConsEdoCtaSol)) {
if ((strResponseLine.substring(217, 218)).equals(
Constantes.strContinua)) {
if (strTrama.equals("")) {
strTrama = strResponseLine;
} else {
strTrama = strTrama +
strResponseLine.substring(new
Integer(Constantes.strLngEncAS400).
intValue(), strResponseLine.length());
}
CloseSocket();
} else {
if (strTrama.equals("")) {
strTrama = strResponseLine;
} else {
strTrama = strTrama +
strResponseLine.substring(new
Integer(Constantes.strLngEncAS400).
intValue(), strResponseLine.length());
}
CloseSocket();
break;
}
} else {
strTrama = strResponseLine;
CloseSocket();
break;
}
}
ruResultado = new RespuestaUtil(Constantes.bytExito,
"Mensaje recibido con éxito.",
"Mensaje recibido con éxito.");
arlResultado.add(ruResultado);
arlResultado.add(strTrama);
return arlResultado;
} catch (SocketTimeoutException ex) {
System.out.println(ex.getMessage());
if (sktClientSocket.isConnected()) {
CloseSocket();
}
ruResultado = new RespuestaUtil(Constantes.bytFracasoExcepcion,
"El mensaje no se recibió." +
ex.getMessage(),
"El mensaje no se recibió.");
arlResultado.add(ruResultado);
return arlResultado;
} catch (IOException ex) {
if (sktClientSocket.isConnected()) {
CloseSocket();
}
ruResultado = new RespuestaUtil(Constantes.bytFracasoExcepcion,
"El mensaje no se recibió." +
ex.getMessage(),
"El mensaje no se recibió.");
arlResultado.add(ruResultado);
return arlResultado;
}catch (Exception ex){
if (sktClientSocket.isConnected()) {
CloseSocket();
}
ruResultado = new RespuestaUtil(Constantes.bytFracasoExcepcion,
"El mensaje no se recibió." +
ex.getMessage(),
"El mensaje no se recibió.");
arlResultado.add(ruResultado);
return arlResultado;
}
} else {
ruResultado = new RespuestaUtil(Constantes.bytFracasoExcepcion,
"El mensaje no se recibió.",
"El mensaje no se recibió.");
arlResultado.add(ruResultado);
return arlResultado;
}
}
Se pela en el
Código PHP:
while ((strResponseLine = this.getDisInput().readUTF()) != null)