problemas con comunicaciones tcp
Muy buenas a todos.
Ante todo decir que soy un toyo con esto de la programaci贸n, pero que lo estoy intentado. Agradecer铆a si alguien puede ayudarme. Estoy intentando desarrollar una aplicaci贸n que debe conectarse con otra mediante tcp. He tomado un c贸digo de esta p谩gina para comenzar a ver si puedo lanzar dos procesos, uno cliente y otro servidor. El problema es que me sale una java.net.ConnectionException. He revisado los puertos (1234) pero no s茅 por qu茅 no puedo hacerlo. La conexi贸n que intento hacer es local, es decir, correr ambos procesos en mi ordenador. Aqu铆 pongo el c贸digo:
import java.io.*;
import java.net.*;
class cliente {
public static void main(String args[]){
// Leemos el primer par谩metro, donde debe ir la direcci贸n
// IP del servidor
System.out.println("Comienza la ejecuci贸n del cliente");
InetAddress direcc = null;
try{
System.out.println("Intenta encontrar el servidor");
//direcc = InetAddress.getByName("192.168.0.35");
//direcc = InetAddress.getByName(args[0]);
direcc = InetAddress.getLocalHost();
if (direcc != null) {
System.out.println("Host encontrado: " + direcc);
} else{
System.out.println("Host no encontrado: " + direcc);
}
} catch(UnknownHostException uhe){
System.out.println("Host no encontrado : " + uhe);
System.exit(-1);
}
// Puerto que hemos usado para el servidor
int puerto = 1234;
// Para cada uno de los argumentos...
for (int n=1;n<args.length;n++){
Socket sckt = null;
DataInputStream dis = null;
DataOutputStream dos = null;
try{
// Convertimos el texto en n煤mero
int numero = Integer.parseInt(args[n]);
System.out.println("Argumento " + n + ": "+ numero);
// Creamos el Socket
System.out.println("Creando el socket de cliente...");
sckt = new Socket(direcc,puerto);
System.out.println("Socket de cliente creado en el puerto: " + sckt.getLocalPort());
System.out.println("Socket conectado ?: " + sckt.isBound());
// Extraemos los streams de entrada y salida
dis = new DataInputStream(sckt.getInputStream());
dos = new DataOutputStream(sckt.getOutputStream());
// Lo escribimos
System.out.println("Intentando enviar: " + numero);
System.out.println("Enviando dato de entrada");
dos.writeInt(numero);
// Leemos el resultado final
System.out.println("Intentando recibir respuesta...");
long resultado = dis.readLong();
// Indicamos en pantalla
System.out.println( "Solicitud = " + numero +
"tResultado = " +resultado );
// y cerramos los streams y el socket
dis.close();
dos.close();
} catch(Exception e){
System.err.println("Se ha producido la excepci贸n : " +e);
}
try{
if (sckt!=null) sckt.close();
} catch(IOException ioe){
System.err.println("Error al cerrar el socket : " + ioe);
}
}
}
}
Y este es el c贸digo del servidor:
import java.io.*;
import java.net.*;
class servidor{
public static void main(String args[]){
// Primero indicamos la direcci贸n IP local
try{
System.out.println("LocalHost = " + InetAddress.getLocalHost().toString());
} catch (UnknownHostException uhe){
System.err.println("No puedo saber la direcci贸n IP local : " + uhe);
}
// Abrimos un "Socket de Servidor" TCP en el puerto 1234.
ServerSocket ss = null;
try{
ss = new ServerSocket(1234);
System.out.println("Socket servidor abierto en el puerto: " + ss.getLocalPort());
} catch (IOException ioe){
System.err.println("Error al abrir el socket de servidor : " + ioe);
System.exit(-1);
}
int entrada;
long salida;
// Bucle infinito
while(true){
try{
// Esperamos a que alguien se conecte a nuestro Socket
System.out.println("Esperando conexiones de clientes...");
Socket sckt = ss.accept();
System.out.println("Conexi贸n establecida");
// Extraemos los Streams de entrada y de salida
DataInputStream dis = new DataInputStream(sckt.getInputStream());
DataOutputStream dos = new DataOutputStream(sckt.getOutputStream());
// Podemos extraer informaci贸n del socket
// N潞 de puerto remoto
int puerto = sckt.getPort();
// Direcci贸n de Internet remota
InetAddress direcc = sckt.getInetAddress();
// Leemos datos de la peticion
entrada = dis.readInt();
// Calculamos resultado
salida = (long)entrada*(long)entrada;
// Escribimos el resultado
dos.writeLong(salida);
// Cerramos los streams
dis.close();
dos.close();
sckt.close();
// Registramos en salida estandard
System.out.println( "Cliente = " + direcc + ":" + puerto +
"tEntrada = " + entrada +
"tSalida = " + salida );
} catch(Exception e){
System.err.println("Se ha producido la excepci贸n : " +e);
}
}
}
}
Espero que alguien me ayude, por favorrrrrrr.
Un saludo.
Ante todo decir que soy un toyo con esto de la programaci贸n, pero que lo estoy intentado. Agradecer铆a si alguien puede ayudarme. Estoy intentando desarrollar una aplicaci贸n que debe conectarse con otra mediante tcp. He tomado un c贸digo de esta p谩gina para comenzar a ver si puedo lanzar dos procesos, uno cliente y otro servidor. El problema es que me sale una java.net.ConnectionException. He revisado los puertos (1234) pero no s茅 por qu茅 no puedo hacerlo. La conexi贸n que intento hacer es local, es decir, correr ambos procesos en mi ordenador. Aqu铆 pongo el c贸digo:
import java.io.*;
import java.net.*;
class cliente {
public static void main(String args[]){
// Leemos el primer par谩metro, donde debe ir la direcci贸n
// IP del servidor
System.out.println("Comienza la ejecuci贸n del cliente");
InetAddress direcc = null;
try{
System.out.println("Intenta encontrar el servidor");
//direcc = InetAddress.getByName("192.168.0.35");
//direcc = InetAddress.getByName(args[0]);
direcc = InetAddress.getLocalHost();
if (direcc != null) {
System.out.println("Host encontrado: " + direcc);
} else{
System.out.println("Host no encontrado: " + direcc);
}
} catch(UnknownHostException uhe){
System.out.println("Host no encontrado : " + uhe);
System.exit(-1);
}
// Puerto que hemos usado para el servidor
int puerto = 1234;
// Para cada uno de los argumentos...
for (int n=1;n<args.length;n++){
Socket sckt = null;
DataInputStream dis = null;
DataOutputStream dos = null;
try{
// Convertimos el texto en n煤mero
int numero = Integer.parseInt(args[n]);
System.out.println("Argumento " + n + ": "+ numero);
// Creamos el Socket
System.out.println("Creando el socket de cliente...");
sckt = new Socket(direcc,puerto);
System.out.println("Socket de cliente creado en el puerto: " + sckt.getLocalPort());
System.out.println("Socket conectado ?: " + sckt.isBound());
// Extraemos los streams de entrada y salida
dis = new DataInputStream(sckt.getInputStream());
dos = new DataOutputStream(sckt.getOutputStream());
// Lo escribimos
System.out.println("Intentando enviar: " + numero);
System.out.println("Enviando dato de entrada");
dos.writeInt(numero);
// Leemos el resultado final
System.out.println("Intentando recibir respuesta...");
long resultado = dis.readLong();
// Indicamos en pantalla
System.out.println( "Solicitud = " + numero +
"tResultado = " +resultado );
// y cerramos los streams y el socket
dis.close();
dos.close();
} catch(Exception e){
System.err.println("Se ha producido la excepci贸n : " +e);
}
try{
if (sckt!=null) sckt.close();
} catch(IOException ioe){
System.err.println("Error al cerrar el socket : " + ioe);
}
}
}
}
Y este es el c贸digo del servidor:
import java.io.*;
import java.net.*;
class servidor{
public static void main(String args[]){
// Primero indicamos la direcci贸n IP local
try{
System.out.println("LocalHost = " + InetAddress.getLocalHost().toString());
} catch (UnknownHostException uhe){
System.err.println("No puedo saber la direcci贸n IP local : " + uhe);
}
// Abrimos un "Socket de Servidor" TCP en el puerto 1234.
ServerSocket ss = null;
try{
ss = new ServerSocket(1234);
System.out.println("Socket servidor abierto en el puerto: " + ss.getLocalPort());
} catch (IOException ioe){
System.err.println("Error al abrir el socket de servidor : " + ioe);
System.exit(-1);
}
int entrada;
long salida;
// Bucle infinito
while(true){
try{
// Esperamos a que alguien se conecte a nuestro Socket
System.out.println("Esperando conexiones de clientes...");
Socket sckt = ss.accept();
System.out.println("Conexi贸n establecida");
// Extraemos los Streams de entrada y de salida
DataInputStream dis = new DataInputStream(sckt.getInputStream());
DataOutputStream dos = new DataOutputStream(sckt.getOutputStream());
// Podemos extraer informaci贸n del socket
// N潞 de puerto remoto
int puerto = sckt.getPort();
// Direcci贸n de Internet remota
InetAddress direcc = sckt.getInetAddress();
// Leemos datos de la peticion
entrada = dis.readInt();
// Calculamos resultado
salida = (long)entrada*(long)entrada;
// Escribimos el resultado
dos.writeLong(salida);
// Cerramos los streams
dis.close();
dos.close();
sckt.close();
// Registramos en salida estandard
System.out.println( "Cliente = " + direcc + ":" + puerto +
"tEntrada = " + entrada +
"tSalida = " + salida );
} catch(Exception e){
System.err.println("Se ha producido la excepci贸n : " +e);
}
}
}
}
Espero que alguien me ayude, por favorrrrrrr.
Un saludo.
