Autor
|
Tema: Indicar puerto local Cliente Sockets TCP (Leído 4,013 veces)
|
BlaineMonkey
Desconectado
Mensajes: 72
|
tengo un cliente de Sockets TCP. Me gustaría saber si hay alguna forma de indicarle el puerto por el que debe escuchar. Pregunto esto porque cuando se corta la conexión con el servidor TCP mi cliente cierra el socket y lo vuelve a abrir, pero al hacer esto, el nuevo socket tiene otro puerto local, y el servidor sigue enviando las respuestas al puerto del socket anterior.
No tengo posibilidad de tocar los fuentes en la parte servidora, por lo que quiero saber si hay alguna forma de indicar al crear el socket del cliente su puerto local.
|
|
|
En línea
|
|
|
|
Axtrall
Desconectado
Mensajes: 40
|
Realmente seria el cliente el que se deberia volver a conectar al servidor con el nuevo puerto (da igual cual), pues es el server el que mantiene un puerto asignado y no lo cambia.
Saludos!
|
|
|
En línea
|
La felicidad es siempre un objetivo, no un estado.
|
|
|
BlaineMonkey
Desconectado
Mensajes: 72
|
Si conectar ya conecto con el nuevo puerto, pero no me llega nada del servidor. He puesto un analizador de redes y veo que aunque estoy conectado con otro puerto el servidor manda los mensajes al puerto anterior.
¿Qué otra cosa puedo hacer?
|
|
|
En línea
|
|
|
|
BlaineMonkey
Desconectado
Mensajes: 72
|
Creo que no va a ser necesario conectar de nuevo. He visto que el problema está en el cliente.
He puesto un analizador de redes, y he visto que si saco de la red la máquina que tiene el servidor TCP, el cliente pasado un rato deja de mandar por red los mensajes. Saco trazas del estado del Socket y en todo momento pone que está conectado (isConnected() es true) y que no está cerrado isClosed() es false.
El socket lo inicializo de la siguiente forma:
echoSocket = new Socket(address, port); echoSocket.setKeepAlive(true); System.out.println("PUERTO:" + echoSocket.getLocalPort()); out = new PrintWriter(echoSocket.getOutputStream()); in = new BufferedReader(new InputStreamReader( echoSocket.getInputStream()));
Para mandar mensajes ejecuto los métodos:
out.write(mensaje); out.flush(); //para que lo escriba
Como he comentado antes, tengo el analizador de redes y veo que pasado un tiempo ya no captura más trazas del cliente hacia el servidor y sin embargo se siguen ejecutando los métodos out.write y out.flush
¿Qué está pasando? ¿Cómo puedo solucionarlo?
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
indicar los dias de cada mes c++
Programación C/C++
|
fralem15
|
4
|
3,829
|
3 Mayo 2011, 20:09 pm
por satu
|
|
|
sockets C cliente&server error en cliente.... :huh:
Programación C/C++
|
kotora
|
1
|
2,985
|
2 Noviembre 2013, 20:14 pm
por kotora
|
|
|
sockets en windows verificar puerto.
Programación C/C++
|
Drewermerc
|
4
|
2,492
|
23 Abril 2014, 07:43 am
por Drewermerc
|
|
|
¿Sockets fuera de la red local?
« 1 2 »
Redes
|
ram03
|
11
|
6,498
|
3 Julio 2014, 18:25 pm
por engel lex
|
|
|
PHP IP local del cliente
PHP
|
Kaxperday
|
5
|
4,912
|
17 Diciembre 2015, 15:59 pm
por kub0x
|
|