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

Problema comunicacion sockets entre windows y linux

Estas en el tema de Problema comunicacion sockets entre windows y linux en el foro de Java en Foros del Web. Hola, espero puedan ayudarme Estoy haciendo un programa en java para enviar información de una pc con Ubuntu server 7 a un conmutador que trabaja ...
  #1 (permalink)  
Antiguo 20/08/2008, 17:38
 
Fecha de Ingreso: mayo-2008
Ubicación: Puebla
Mensajes: 13
Antigüedad: 16 años
Puntos: 0
Problema comunicacion sockets entre windows y linux

Hola, espero puedan ayudarme

Estoy haciendo un programa en java para enviar información de una pc con Ubuntu server 7 a un conmutador que trabaja con windows xp sin éxito alguno.

Solo estoy haciendo el programa cliente pues el conmutador ya tiene su proceso servidor corriendo.

Mi programa es muy sencillo
esta es la parte principal:

Código:
try {
    Socket socket = new Socket(ip,Integer.valueOf(port));  //ip y port son strings declaradas previamente
    socket.setSoTimeout(30000);
   BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    PrintWriter output = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()),true);
    output.println("PASS "+password);   //Envio contraseña
    System.out.println(input.readLine());   //leo respuesta
    output.println("GetGWConfig");     //envio petición gateway config
    System.out.println(input.readLine());   //leo respuesta
			
}
catch (IOException anException) {
			System.out.println(anException);
		}
De hecho mi programa solo necesita enviar y recibir cadenas, de hecho lo he probado en máquinas con windows xp y windows vista y funciona perfectamente, sin embargo al momento de pasarlo a un equipo con linux (lo hecho en una pc con redflag 5 y en el ubuntu que es en donde debe estar) el programa me lanza el SocketTimeOut exception que configuré, sin embargo depurando el programa veo que el timeout es lanazado al momento de intentar leer la primera respuesta (es decir de hacer el primer readLine), como si lo primero que envié (la contraseña) nunca hubiera sido recibida, sin embargo con un sniffer veo claramente que la cadena es enviada, no logro saber por que la comunicación varía entre linux y windows.
Espero alguien me pueda decir si es que se debe hacer de otra forma para establecer esta comunicación.
  #2 (permalink)  
Antiguo 22/08/2008, 10:32
 
Fecha de Ingreso: mayo-2008
Ubicación: Puebla
Mensajes: 13
Antigüedad: 16 años
Puntos: 0
De acuerdo Respuesta: Problema comunicacion sockets entre windows y linux

Hola, muy contenta escribo por que he resuelto mi problema. escribo la solución pues por si alguien se encuentra en el futuro con el mismo problema:

El problema consistía en que para linux (unix) y windows el retorno de carro se maneja distinto, pues para unix solo se necesita un \n y para windows un \r\n:

por lo tanto al momento de poner la instrucción:

output.println("PASS "+password); //Envio contraseña

dejo que java automáticamente ponga el retorno de carro

lo que tuve que hacer fue:

PrintWriter output = new PrintWriter(new OutputStreamWriter(socket.getOutputStream())); //quitar el autoflush del printwriter
output.print("PASS "+password+"\r\n"); //cambiar el println por un print y mandar el fin de carro manual pero mandando el de Windows \r\n
output.flush(); //hacer el flush
System.out.println(input.readLine()); //y leer por fin mi respuesta!!!!!!


Saludos!!!!
  #3 (permalink)  
Antiguo 05/05/2009, 00:24
 
Fecha de Ingreso: mayo-2009
Mensajes: 1
Antigüedad: 15 años
Puntos: 0
Respuesta: Problema comunicacion sockets entre windows y linux

Hola tengo un problema parecido lo que pasa es que quiero primero saber como encontrar la ip real de linux y xp valga decir que linux esta trabajando en forma virtual con vmware lo q me lleva a decir como hago ping entre linux y xp y luego hay alguna configuracion previa que hacer antes de correr los sockets de sedrvidor y cliente (linux y xp) agradezco cualquier ayuda la_sandrita si puedes a mi correo: [email protected] es mas si puedes asistirme en linea con msn seria el exito gracias.
[email protected]
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 06:22.