Problema en Recepción de datos en un Puerto IP

14/11/2007 - 18:12 por Javito | Informe spam
Hola a todos, estoy montando un Servicio de recogida de datos en un Servidor
ligado a la dirección IP del mismo y a un puerto, y lo he ligado a un thread
y funciona, y al entrar una conexión de Cliente recibe los datos, pero si
estoy conectado a un Cliente y recibiendo datos y otro cliente intenta
conectarse al mismo puerto, bloque la recepción y ya no recibo datos de
ninguno de los dos.

El problema es lógico pues el enlace es punto a punto, pero que
estructura me recomendais hacer para que pueda procesar todas las entradas
sin que a nadie se le bloquee nada.y recibir todos los datos.

un saludo

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
14/11/2007 - 22:07 | Informe spam
"Javito" wrote in message
news:%
Hola a todos, estoy montando un Servicio de recogida de datos en un
Servidor ligado a la dirección IP del mismo y a un puerto, y lo he ligado
a un thread y funciona, y al entrar una conexión de Cliente recibe los
datos, pero si estoy conectado a un Cliente y recibiendo datos y otro
cliente intenta conectarse al mismo puerto, bloque la recepción y ya no
recibo datos de ninguno de los dos.

El problema es lógico pues el enlace es punto a punto, pero que
estructura me recomendais hacer para que pueda procesar todas las entradas
sin que a nadie se le bloquee nada.y recibir todos los datos.



Lo que se hace normalmente es que cada vez que llega una conexión al
puerto, se inicia un nuevo hilo para antender a esa conexión, y en el hilo
principal se vuelve a hacer un "Listen" sobre el puerto para que vuelva a
atender a la siguiente conexión que intente abrirse desde otro cliente.
Respuesta Responder a este mensaje
#2 Javito
14/11/2007 - 22:12 | Informe spam
Implica eso la utilización de un pool de threads ? es que es un tema que aún
estoy revisando.

un saludo

"Alberto Poblacion"
escribió en el mensaje news:
"Javito" wrote in message
news:%
Hola a todos, estoy montando un Servicio de recogida de datos en un
Servidor ligado a la dirección IP del mismo y a un puerto, y lo he ligado
a un thread y funciona, y al entrar una conexión de Cliente recibe los
datos, pero si estoy conectado a un Cliente y recibiendo datos y otro
cliente intenta conectarse al mismo puerto, bloque la recepción y ya no
recibo datos de ninguno de los dos.

El problema es lógico pues el enlace es punto a punto, pero que
estructura me recomendais hacer para que pueda procesar todas las
entradas sin que a nadie se le bloquee nada.y recibir todos los datos.



Lo que se hace normalmente es que cada vez que llega una conexión al
puerto, se inicia un nuevo hilo para antender a esa conexión, y en el hilo
principal se vuelve a hacer un "Listen" sobre el puerto para que vuelva a
atender a la siguiente conexión que intente abrirse desde otro cliente.

Respuesta Responder a este mensaje
#3 Alberto Poblacion
14/11/2007 - 22:19 | Informe spam
"Javito" wrote in message
news:
Implica eso la utilización de un pool de threads ? es que es un tema que
aún estoy revisando.



No es obligatorio, pero puede ser una buena idea si necesitas el máximo
rendimiento, ya que con el pool de threads aceleras la apertura de los
mismos.
Respuesta Responder a este mensaje
#4 javito
15/11/2007 - 09:17 | Informe spam
Yo veo dos posibilidades teóricas:
1) crearle un tiempo de espera a la llamada entrante de forma que se ponga
en cola a la espera de que se libere la conexión y capturarla en distintos
reintentos
2) alguna forma que implique Threads pero no veo como encajar esto dado que
la línea del Servidor que incluye el Servicio que acepta la conexión es
SocketCliente = ServerSocket.AcceptTcpClient()
y la ejecución se queda interrumpida aquí hasta que un cliente llama y
cierra la conexión y ya continua, y no veo como ligar esto a un Thread
cuando el primer paso del proceso es aceptar la conexión me podriais dar un
par de líneas de código que me ayuden a verlo

un saludo


"Alberto Poblacion"
escribió en el mensaje news:%
"Javito" wrote in message
news:
Implica eso la utilización de un pool de threads ? es que es un tema que
aún estoy revisando.



No es obligatorio, pero puede ser una buena idea si necesitas el máximo
rendimiento, ya que con el pool de threads aceleras la apertura de los
mismos.


Respuesta Responder a este mensaje
#5 Hernan
15/11/2007 - 11:10 | Informe spam
Yo veo dos posibilidades teóricas:
1) crearle un tiempo de espera a la llamada entrante de forma que se ponga
en cola a la espera de que se libere la conexión y capturarla en distintos
reintentos



Uhh.. no... ¿Cuánto tiempo es suficiente? No contestes, es una
pregunta
retórica.

2) alguna forma que implique Threads pero no veo como encajar esto dado que
la línea del Servidor que incluye el Servicio que acepta la conexión es
SocketCliente = ServerSocket.AcceptTcpClient()
y la ejecución se queda interrumpida aquí hasta que un cliente llama y ...



... crea un thread que atiende toda la tarea ...

cierra la conexión ...



... y termina el thread.
Mientras tanto el thread principal vuelve al AcceptTcpClient() en
forma
inmediata.

... cuando el primer paso del proceso es aceptar la conexión me podriais dar un
par de líneas de código que me ayuden a verlo



¿Has buscado en Internet? Apuesto que hay tropecientos ejemplos de
servidores de TCP publicados.


un saludo

"Alberto Poblacion"
escribió en el mensajenews:%





> "Javito" wrote in message
>news:
>> Implica eso la utilización de un pool de threads ? es que es un tema que
>> aún estoy revisando.

> No es obligatorio, pero puede ser una buena idea si necesitas el máximo
> rendimiento, ya que con el pool de threads aceleras la apertura de los
> mismos.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida