Autor
|
Tema: Error de conexión con mi herramienta de administracion remota (sckError) (Leído 2,119 veces)
|
Snort
Desconectado
Mensajes: 338
|
Wenas, estaba haciendo mi herramienta de administracion remota con conexion inversa en visual basic 6, con la api del winsock, para poder usarla en cualqier pc, pero al ponerle el cliente a conectar, el estado del socket (lo pone en la ventana del vb) es "sckConnecting" y al poco tiempo (1 segundo, si llega), el estado es de "sckError", y evidentemente, no se le conecta con el server No se porqe ocurre esto, pero bueno pues por si me podeis ayudar, aqi os dejo los codigos: El cliente: Dim WithEvents ws As CSocketMaster
Private Sub Form_Load() On Error Resume Next Set ws = New CSocketMaster ws.CloseSck ws.Protocol = sckTCPProtocol ws.RemotePort = "5121" ws.RemoteHost = "127.0.0.1" ws.Connect End Sub
Private Sub Timer1_Timer() If ws.State = 7 Then Label2.Caption = "Conectado" Else Label2.Caption = "Desconectado" End If End Sub
Private Sub Ws_ConectionRequest(ByVal requestID As Long) ws.CloseSck ws.Accept requestID Label4.Caption = ws.RemoteHostIP End Sub El server: Dim WithEvents ws As CSocketMaster Dim filesize As Long, datos2 As String, filedata As String, send As Boolean, path As String
Private Sub Form_Load() On Error Resume Next ws.CloseSck ws.Protocol = sckTCPProtocol ws.LocalPort = "5121" ws.Listen End Sub
Private Sub Timer1_Timer() If ws.State = 7 Then Label1.Caption = "Conectado" Else Label1.Caption = "Desconectado" End If End Sub
Private Sub ws_ConnectionRequest(ByVal requestID As Long) ws.CloseSck ws.Accept requestID End Sub
Saludos, y espero qe me podais ayudar, graxias PD: Esta claro qe al troyano le falta mucho code, pero no lo he puesto porqe no es necesario, para no liar.
|
|
|
En línea
|
|
|
|
<--v1c1ous-->
Desconectado
Mensajes: 776
¡Operadora! ¡Deme el número para el 911! - Homero
|
Primero que el sckError es comun: Intenta conectar, cuando no puede, salta sckError, intenta conectar de vuelta, cuando no puede salta sckError y asi... Y segundo, la parte que esta a la escucha acepta la conexión, la otra no, solo se conecta. Cliente:Option Explicit Dim WithEvents ws As CSocketMaster Private Sub Form_Load() Set ws = New CSocketMaster ws.CloseSck ws.Connect Client.LocalIP, 5121 End Sub
Servidor:Option Explicit Dim WithEvents ws As CSocketMaster
Private Sub Form_Load() Set ws = New CSocketMaster ws.CloseSck ws.Bind 5121 ws.Listen End Sub
Private Sub ws_ConnectionRequest(ByVal requestID As Long) ws.CloseSck ws.Accept requestID End Sub
Si cuando el Cliente intenta conectar y salta error queres que vuelva a intentarlo, simple:Private Sub ws_Error(ByVal Number As Integer, Description As String, ByVal sCode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean) ws.CloseSck ws.Connect Client.LocalIP, 5121 End Sub
O bien:Private Sub Timer_Coneccion_Timer() If Not ws.State = sckConnected Then ws.CloseSck ws.Connect Client.LocalIP, 5121 End If End Sub
|
|
|
En línea
|
|
|
|
Snort
Desconectado
Mensajes: 338
|
Claro, pero asi lo qe haria es intentar conectar, luego dar error, y enseguida volver a intentar conectar, inmediatamente otra vez error... y asi sin parar hasta qe se cierre el cliente, no? Asi solo conseguiria reintentar la conexion, acabo de proavr y no se conecta, la conexion sigue dando error. Muchas gracias por la respuesta, pero sigue sin conectarse, reintenta i reintenta pero no lo consigue... Porqe?
|
|
|
En línea
|
|
|
|
<--v1c1ous-->
Desconectado
Mensajes: 776
¡Operadora! ¡Deme el número para el 911! - Homero
|
Estas haciendo algo mal, mire el codigo y no tiene nada malo, y para no complicarte lo probe para ver si realmente no me fallaba la vista y me anda perfectamente. Tuve un error te tipeo en el cliente donde puse Client.LocalIP iria ws.LocalIP pero imagino que te salto el error y lo arreglaste. -Crea los dos nuevos proyecto. -Agrega el Modulo modSocketMaster.bas. -Agrega el ModuloClass CSocketMaster.cls. -Guarda los dos proyectos. -Copia los respectivos codigo que hice (Cliente y Servidor). Y tiene que funcionarte perfectamente. Y fijate tu Firewall
|
|
|
En línea
|
|
|
|
Snort
Desconectado
Mensajes: 338
|
Woow, no me digas qe te expliqe porqe, pero ahora lo qe le pasa (mas raro aun) es qe se conecta cuando le apetece unicamente, (El firewall siempre desactivado claro) teniendo los dos proyectos abiertos, ejecuto ambos, y no pasa nada, cierro vuelvo ejecutar (sin cambiar absolutamente nada)y alomejor si alomejor no (¿? ), pero la historia no acaba ahi, si no qe cuando si qe se conecta, unicamente me pone en el label2 del form del cliente "conectado" y en el label del server tambien, pero no me sale la ip por ejemplo en el label4 del cliente, y tampoco me deja trasnferir archivos, o mandar mensajes entre ambas aplicaciones. Lo ultimo ya es qe donde ponia lo de sckError o sckconnecting, ahora, cuando se conectaen cada ventana del vb6 (ambos proyectos) me pone FD_WRITE y un numero (Nunca me he podido conectar con la api, por tanto no tengo ni idea). Ej (FD_WRITE 804, FD_WRITE 976, FD_WRITE 1044, FD_WRITE 796, FD_WRITE 736...) Bueno pues muchiiiisimas gracias por sus respuestas PD: Ah por cierto si suando estan conectados cierras el server, en el cliente pone deconectado, pero si al estar conectado se cierra el cliente, en el server sigue ponindo conectado y en el vb FD_WRITE y el nº. Saludos y gracias otra vez...
|
|
|
En línea
|
|
|
|
<--v1c1ous-->
Desconectado
Mensajes: 776
¡Operadora! ¡Deme el número para el 911! - Homero
|
Bueno, a ver, primero unas aclaraciones:-Todos los comandos que te aparescan impresos en la consola de VB los imprime la API, asi que simplemente si no sabes que quieren decir buscalos dentro del codigo.
-Nunca me hizo ningun pitido este API, no es WinSock.
- FD_WRITE 804, FD_WRITE 976, FD_WRITE 1044, FD_WRITE 796, FD_WRITE 736 etc, es lo que aparece cuando se transmiten/reciven datos. Por ejemplo: FD_READ lo imprime la funcion PostSocket solo para avisar que esta leyendo datos. No son errores, solo informacion.Y ahora, vos pediste que te hagan funcionar el codigo que posteaste, y asi fue, ese codigo como bien dijiste es muy vago, para que conecte primero tenes que abrir el Servidor para que escuche y despues el Cliente que se conecte, de otra forma no anda. ¿Por que? Simple, mira: SERVIDOR escucha<-->CLIENTE conecta Si el SERVIDOR no escucha<--> el CLINETE no tiene a quien conectar y no lo intenta mas. Proba, si primero ejecutas el Servidor, despues el Cliente te va a conectar perfectamente, de lo contrario, quedara tratando de conectar sin respuesta. ¿Como se soluciona?En el servidor:Para que vuelva a escuchar si falla la conexión o se cierra.Private Sub ws_Error(ByVal Number As Integer, Description As String, ByVal sCode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean) ws.CloseSck 'Escuhar End Sub
Private Sub ws_CloseSck() ws.CloseSck 'Escuhar End Sub
En el Cliente:Para que vuelva a conectar si falla la conexión o se cierra y sepa si esta o no conectado para volver a intentar si no lo logro.Private Sub ws_Error(ByVal Number As Integer, Description As String, ByVal sCode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean) ws.CloseSck 'Conectar End Sub Private Sub ws_CloseSck() ws.CloseSck 'Conectar End Sub Private Sub Timer_Coneccion_Timer() If ws.State = sckConnected Then 'Conectado Else 'Desconectado 'Conectar End If End Sub
De esta forma tiene que andar PERFECTA la conexión. Si no te funciono ¿Que podes intentar?:-Baja de otra parte el Modulo y el Modulo Class dek Socket(Puede que esten modificados). -Intenta con otro puerto -Fijate de tener: En las declaraciones Globales: Option Explicit Dim WithEvents ws As CSocketMaster
Y cuando inicia el Form: Set ws = New CSocketMaster
|
|
|
En línea
|
|
|
|
Snort
Desconectado
Mensajes: 338
|
Ei hotmail_pop3, tio eres el amo, ya lo he conseguido conectar, si se cierra el cliente o el servidro y se vuelve a abrir se vuelve a establecer la conexion, he conseguido enviar datos de caja de texto a caja de texto, aunqe no archivos, me revisare el codigo de mandar archivos. El problema estaba en qe lo estaba haciendo de conexion inversa y mientras el cliente escuchaba y el servidor se conectaba, en el codigo estaba todo mareao, ambos se conectaban y escuchaban, lo qe creaba conflictos errores i de todo. Lo estoy pasando a conexion inversa, aver si hay suerte y ya me rula bien... Gracias
|
|
|
En línea
|
|
|
|
|
|