PDA

Ver la Versión Completa : ¿Se puede elegir puerto interno de windows en una conexión?


NPIdea
19-11-2014, 11:29:55
Hola a todos.

Estoy con un ClientSocket y abro conexión a un host con puerto 2001 por ejemplo.

Pero analizando con Wiresark mi puerto real es el 65001 (por ejemplo).

Mi pregunta es si se puede controlar de alguna forma o elegir que puerto quiero usar internamente.

No es capricho, es por unos dispositivos que cuando me dan un error 10053 (RST) y vuelvo a establecer la conexión, me cambia el puerto y conectan pero no comunica por que el dispositivo se debe quedar con el primer puerto de conexión.

Espero haberme explicado.

Gracias

duilioisola
19-11-2014, 16:30:56
Aparentemente se puede, pero parece complicado.
https://idea.popcount.org/2014-04-03-bind-before-connect/

Yo trataría de resolver el problema desde el punto de vista del dispositivo. (Si pierde la conexión que se olvide de los parámetros anteriores)
Quizás solo esperando unos segundos antes de reintentar la conexión sea suficiente para solucionar el problema.

Pequeña historia parecida a la tuya:
Si haces un netstat -a -n verás que sale una lista de puertos conectados/escuchando/TIME_WAIT
Las conexiones "recientemente" cerradas quedan así durante un momento, antes de quedar libres para ser utilizados.
Recuerdo en Windows 98, ese tiempo era largo (casi un minuto)
Tenía un dispositivo al que hacíamos pooling, conectando y desconectando cada segundo. Después de un rato todo fallaba porque había demasiados puertos "abiertos". Bajando el tiempo entre cada conexión solucionamos el problema.
Luego instalamos otro Windows XP y todo fue mejor, ya que los puertos quedaban menos tiempo en ese estado TIME_WAIT.

NPIdea
19-11-2014, 16:38:05
Muchas gracias por tu respuesta.

Lo miro, el problema es que te modifiquen un dispositivo, por eso pregunto sobre algo que tendría yo el control.

Contestaré para decir si he conseguido algo.

Un saludo