• Domingo 22 de Diciembre de 2024, 09:40

Autor Tema:  Saber Si Un Puerto Ya Está Ocupado  (Leído 4731 veces)

martin campos quintero

  • Miembro MUY activo
  • ***
  • Mensajes: 113
  • Nacionalidad: 00
    • Ver Perfil
Saber Si Un Puerto Ya Está Ocupado
« en: Miércoles 22 de Diciembre de 2004, 00:40 »
0
Hola a todos, aquí yo de nuevo haciendo preguntas  :D

Ahora el problema que tengo es que yo tengo una aplicación que será la aplicación servidor el cual implemento con el componente winsock y abro el puerto 10111 a la escucha, ahora me conecto desde otra máquina al servidor por medio del puerto que tiene abierto, el chat entre las dos máquinas funciona a la perfección, pero cuando trato de conectar un segundo cliente al servidor, y mando un mensaje me sale un error  :( . Lo que quiero es que el servidor acepte varias conexiones simultaneas, ¿A caso a cada cliente lo debo recibir por puertos distintos?, si es así se haría con un vector de controles winsock y si el puerto 10111 estuviese ocupado ya por otro cliente pues conectaría con el puerto 10112 y así sucesivamente, pero el problema sería el siguiente: ¿Como saber si el puerto al que me quiero conectar ya está ocupado?

Espero hayan entendido mi duda  :D  y si tienen alguna respuesta que me pueda ser de ayuda, no duden en decírmela o si tienen algún código o link pues que bien.

De antemano agradezco su ayuda  :P

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Saber Si Un Puerto Ya Está Ocupado
« Respuesta #1 en: Martes 28 de Diciembre de 2004, 09:35 »
0
Hola ZeroCool.

¿Qué tal si utilizas el evento Error del control winsock? Uno de sus parámetros es un código que te puede ayudar.

Citar
Constante Valor Descripción
sckOutOfMemory 7 Sin memoria
sckInvalidPropertyValue 380 El valor de la propiedad no es válido.
sckGetNotSupported 394 No se puede leer la propiedad.
sckSetNotSupported 383 La propiedad es de sólo lectura.
sckBadState 40006 Protocolo o estado de conexión incorrecto para la solicitud o la transacción requerida.
sckInvalidArg 40014 El argumento que se pasó a una función no estaba en el formato correcto o en el intervalo especificado.
sckSuccess 40017 Correcto.
sckUnsupported 40018 Tipo Variant no aceptado.
sckInvalidOp 40020 La operación no es válida en el estado actual.
sckOutOfRange 40021 El argumento está fuera del intervalo.
sckWrongProtocol 40026 Protocolo erróneo para la solicitud o la transacción requerida.
sckOpCanceled 10004 Se canceló la operación.
sckInvalidArgument 10014 La dirección solicitada es una dirección de multidifusión, pero el indicador no está activado.
sckWouldBlock 10035 El socket es no bloqueante y la operación especificada se bloqueará.
sckInProgress 10036 Se está efectuando una operación de Winsock bloqueante.
sckAlreadyComplete 10037 Se completó la operación. No se están efectuando operaciones bloqueantes.
sckNotSocket 10038 El descriptor no es un socket.
sckMsgTooBig 10040 El datagrama es demasiado grande para el búfer y se truncará.
sckPortNotSupported 10043 El puerto especificado no es compatible.
sckAddressInUse 10048 Dirección en uso.
sckAddressNotAvailable 10049 La dirección no está disponible en la máquina local.
sckNetworkSubsystemFailed 10050 Error en el subsistema de red.
sckNetworkUnreachable 10051 El host no puede encontrar la red en este momento.
sckNetReset 10052 Expiró el tiempo de espera de la conexión antes de establecer SO_KEEPALIVE.
sckConnectAborted 10053 La conexión se ha cancelado al sobrepasar el tiempo de espera o por otro error.
sckConnectionReset 10054 La conexión se ha restablecido desde el lado remoto.
sckNoBufferSpace 10055 No hay espacio disponible en el búfer.
sckAlreadyConnected 10056 El socket ya está conectado.
sckNotConnected 10057 El socket no está conectado.
sckSocketShutdown 10058 El socket se ha desactivado.
sckTimedout 10060 Se ha sobrepasado el tiempo de conexión.
sckConnectionRefused 10061 Se ha forzado el rechazo de la conexión.
sckNotInitialized 10093 Es necesario llamar primero a WinsockInit.
sckHostNotFound 11001 Respuesta autorizada: host no encontrado.
sckHostNotFoundTryAgain 11002 Respuesta no autorizada: host no encontrado.
sckNonRecoverableError 11003 Errores no recuperables.
sckNoData 11004 Nombre válido; no hay registro de datos del tipo solicitado.

Prueba a ver...

Suerte.