Foro de Java y C++ de Chuidiang

Este foro se mueve a Foro de Java y C++

Foro de Java y C++ de Chuidiang
Servidor que escucha varios puertos a la vez
* E-mail:
* Password:
Registrarse Presentación Miembros Imágenes
¿Has olvidado tu Password?

Lista de mensajes
Autor Mensaje
Chuidiang
 
Mensajes: 774
Registrado: Noviembre/2005
Estado: Off-line
Grupo: Administrador del foro
 
 
  Re: Servidor que escucha varios puertos a la vez 15/Noviembre/2008 - 00:53

Hola:

Crea cuatro hilos y que cada uno atienda a uno de los puertos.

Se bueno.

Draker
 
Mensajes: 1
Registrado: Octubre/2008
Estado: Off-line
Grupo: Nuevo usuario
 
 
  Servidor que escucha varios puertos a la vez 23/Octubre/2008 - 12:18

Hola buenos dias.

Vereis tengo que crear una aplicacion que hace de servidor, el cual recibe conexiones por 4 puertos a la vez. Utilizo threads para que lo gestione en paralelo pero no funciona del todo bien...

El caso es que por supuesto si pongo que reciba y procese las conexiones de un unico puerto me lo hace perfectamente pero si añado otro puerto mas me surge el siguiente problema:

Creo 2 ServerSocket , uno para el puerto 1027 y otro para el 1028 ( por ejemplo ), a continuacion me pongo a escuchar en el puerto 1027 y en teoria tambien en el 1028. Vale, el problema es el siguiente: Me llega una conexion por el 1027 y la acepto y proceso ( hasta aqui bien ) , ahora esta esperando tambien una por el 1028 pero sino llega ninguna conexion se queda esperando ahi y no vuelve al inicio del bucle donde se esperan nuevas conexiones al 1027... por tanto no puedo recibir conexiones en el 1027 sino recibo conexiones en el 1028... como soluciono esto? Como consigo que vuelva a esperar una conexion en el 1027 mientras esta esperando en el 1028?

Adjunto el codigo para que se vea mas claro...

public class Servidor {

public static void main(String[] args) {
ServerSocket ss = null;
ServerSocket ss2 =null;

// Creamos sockets servidor para los distintos puertos.
try {
ss = new ServerSocket(1027);
}
catch (IOException e) {
e.printStackTrace();
System.exit(-1);
}
try {
ss2 = new ServerSocket(1028);
}
catch (IOException e) {
e.printStackTrace();
System.exit(-1);
}

System.out.println("Servidor a la escucha...");

// Atendemos las peticiones en paralelo para cada uno de los puertos.
while(true){
try {
new GestionaPuerto1027(ss.accept()).start(); // esta clase extiende a Thread
new GestionaPuerto1028(ss2.accept()).start(); // esta clase extiende a Thread
}
catch (IOException e) {
e.printStackTrace();
System.exit(-1);
}
}
}

}

Usuarios activos
10 usuarios activos: 0 miembros y 10 huespedes en el foro.
 Reglas de mensaje
puedes escribir nuevos temas
puedes responder a los temas
puedes adjuntar archivos
no puedes editar tus mensajes
Contactar con el Administrador del foro.

La utilización del servicio vendrá condicionada por la previa aceptación de las Condiciones Generales de Uso del Servicio.



Foro gratis creado en ForosWebGratis.com. Crea tu propio foro aquí.