Foros del Web » Programación para mayores de 30 ;) » Java »

Socket: Problema con readUTF()

Estas en el tema de Socket: Problema con readUTF() en el foro de Java en Foros del Web. 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í ...
  #1 (permalink)  
Antiguo 04/01/2006, 11:55
Avatar de aetrejo  
Fecha de Ingreso: septiembre-2004
Ubicación: Guatemala
Mensajes: 131
Antigüedad: 19 años, 7 meses
Puntos: 0
Socket: Problema con readUTF()

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(163167);

        
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(217218)).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
__________________

Si algo puede fallar... fallará.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:46.