Hola a todos como estan bueno he tenido un tiempito sin venir es que mi pc estaba dañada pero ya la he arreglado, bien mi duda es la siguiente:
Tengo un programa que estoy creando (Un chat multi-usuarios) la cual se conectan a un servidor , pero cuando voy a conectar otro cliente al servidor me salta un error es el siguiente:
Error : "40020" en tiempo de ejecucion:
Operacion no valida en el estado actual.
Bueno espero que me puedan ayudar si necesitan mas info o la parte del code en la que conecta y eso pues se los dare enseguida , repito porfavor ayudenme es importante! :-\
:rolleyes: Sí, mejor pon el código.
.
Usa el buscador, esto ya esta en otros Post.
Totorial Winsock (http://foro.elhacker.net/programacion_visual_basic/tutorial_del_control_winsock-t75832.0.html)
* Usa un poco de lógica, si te dice "Operacion no valida en el estado actual." entonces ¿Por que no rectificas el estado actual del socket y realizas dicha acción?, algunos casos que dan este problema son: El socket esta en escucha, enviando informacion, esta cerrado, etc.
En el evento Error del socket te saltan estas constantes.
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.
Dulces Lunas!¡.
Ojo estos errores se solucionan usan los IF THEN ELSE END IF (Comprobar estados, por si te da weba buscar es la propiedad .state).
Constante Valor Descripción
sckClosed 0 Predeterminado. Cerrado
sckOpen 1 Abierto
sckListening 2 Escuchando
sckConnectionPending 3 Conexión pendiente
sckResolvingHost 4 Resolviendo host
sckHostResolved 5 Host resuelto
sckConnecting 6 Conectando
sckConnected 7 Conectado
sckClosing 8 El equipo está cerrando la conexión
sckError 9 Error
Por ejemplo:
Private Sub tcpServer_ConnectionRequest (ByVal requestID As Long)
' Comprueba si el estado del control es cerrado.
' De lo contrario, cierra la conexion antes de
' aceptar la nueva conexion.
If tcpServer.State <> sckClosed Then _
tcpServer.Close ' Si no hacemos esto y el socket esta conectado nos arrojara un error...
' Acepta la peticion con el parametro
' requestID.
tcpServer.Accept requestID
End Sub
Dulces Lunas!¡.
Gracias amigos gracias , bueno heee a BlackZeroX (Astaroth) amigo te envie un MP pero no sabia que habias contestado gracias por hacerlo , olvida ese mensaje probare lo que me pusiste ahora cualquier cosa te aviso!
Sabes este ejemplo te ayudara mucho: http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=60099&lngWId=1
Cita de: DarkMatrix en 16 Diciembre 2012, 02:35 AM
Sabes este ejemplo te ayudara mucho: http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=60099&lngWId=1
Dark amigo , mi heroe gracias esto era lo que necesitaba eres el mejor , y gracias a todos los que me ayudaron .
Olle Dark una duda tu juego esta echo con Winsock o algo haci ?
y si no es molestia tabien podrias harme un ejemplo de como creaste tan fantastico inicio de sesion , lo he buscado por todas partes pero nada es inutil buscar y buscar , tambien lo he intentado pero he frecasado 1 y otra ves :( .
Espero que me puedas ayudar y Muchisimaas Gracias! ;)
Pero a que te refieres con el inicio de sesion, con con el aspecto visual o el codigo para hacer login y eso?
Si con el code y eso amigo el login como haces para que cuando te registres puedas inciar sision al juego con tus datos.
Me Explico :
Cuando abres el programa , vas a iniciar sesion
pero para inciar sesion Debes estar registrado.
Los datos del registro se guardan en una base de datos de un servidor ?¿
Eso es lo que quiero saber como has echo ese login amigo ¿? , que por lo que veo es el mejor que he visto...
¿Tu juego esta echo con winsock?
Si es winsock... o una variante... pero a fin de cuentas es lo mismo.
Dulces Lunas!¡.