tengo este codigo porfavor si alguie sabe como crear un explorador remoto q me diga cual es mi error por q amii no me funca...
Cliente:
1 Winsock: Winsock1
2 TextBox: txtIp , txtRuta
5 Botones: cmdConectar,cmdDesconectar,cmdMostrar,cmdMostrarAr chivos,cmdAtras
2 Listbox: lstDirectorios,lstArchivos
4 Labels: lblInformacion,lblDirectorioRemoto,lblArchivos,lbl Directorios
En General, comenzamos declarando unas variables:
Código:
Dim Ruta As String 'Aca se almacenarà la Ruta
Dim Donde As String 'Esta la usaremos para identificar donde mandar la data recibida
Dim Atras As String 'Esta la usaremos para poder retroceder a una ruta anterior
cmdConectar:
Código:
Private Sub cmdConectar_Click()
Winsock1.Connect txtIp.Text, "8080" 'Especificado el IP en txtIp, me conecto ( p: 1001 )
cmdConectar.Enabled = False 'Desabilitamos el boton cmdConectar
cmdDesconectar.Enabled = True 'Habilitamos el boton cdmDesconectar
End Sub
cmdDesconectar:
Código:
Private Sub cmdDesconectar_Click()
Winsock1.Close ' Cerramos el Winsock
cmdConectar.Enabled = True 'Habilitamos cmdConectar
cmdDesconectar.Enabled = False 'Desabilitamos cmdDesconectar
frmCliente.Caption = "Explorador Remoto - [Desconectado]" ' Cambiamos el caption
End Sub
Evento Connect de Winsock1:
Código:
Private Sub Winsock1_Connect()
lblInformacion.Caption = "Ubicaciòn en " & txtIp & " :" 'Caption que informa a donde estamos conectados
frmCliente.Caption = "Explorador Remoto - [Conectado]" 'El Caption del form informa si estamos conectados o no
End Sub
Evento Error de Winsock1:
Código:
Private Sub Winsock1_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)
Winsock1.Close
End Sub
cmdMostrar:
Código:
Private Sub cmdMostrar_Click()
Ruta = txtRuta.Text 'En la variable ruta, decimos en que directorio nos queremos situar
X = Ruta 'Asignamos el valor de Ruta a X , por medio de ella ira la data de cliente a server
Winsock1.SendData X ' Enviamos X
Donde = "Directorios" ' Le especificamos donde ira a para la data recibida ( a que List )
lstDirectorios.Clear ' Limpiamos lstDirectorios, para recibir data nueva
Atras = Ruta ' Asignamos el valor de la posicion actual a la variable Atras
lblDirRemoto.Caption = Ruta ' Le damos el valor de la ruta actual a lblDirRemoto
End Sub
cmdMostrarArchivos:
Código:
Private Sub cmdMostrarArchivos_Click()
X = "Mostrar Archivos" ' Pedimos al servidor, lso archivos de la ruta en la que estamos
Winsock1.SendData X ' Enviamos la data, por medio de X
Donde = "Archivos" ' Le decimos donde volcar la data
lstArchivos.Clear ' Limpiamos lstArchivos, para recibir nueva data
End Sub
cmdAtras:
Código:
Private Sub cmdAtras_Click()
X = Atras 'Asignamos a X el valor de la variable Atras
Winsock1.SendData X ' Enviamos Data
Donde = "Directorios" ' Le decimos donde volcar la data una vez recibida
lstDirectorios.Clear ' Limpiamos lstDirectorio, para recibir nueva data
lblDirRemoto.Caption = Atras ' Mdoficamos lblDirRemoto para mostrar la ruta actual
End Sub
Evento Data_Arrival de Winsock1:
Código:
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Winsock1.GetData X, vbString ' Recibimos X,desde el server
Select Case Donde ' Evaluamos su valor
Case "Directorios" ' Si traia el valor directorios, procedemos:
lstDirectorios.AddItem X ' La data que arriba la volcamos en lstDirectorios
Case "Archivos" ' Evaluamos el valor
lstArchivos.AddItem X ' Si su valor era Archivos, la data se vuelca en lstArchivos
End Select ' Cerramos el case
End Sub
lstDirectorios:
Código:
Private Sub lstDirectorios_Click()
Ruta = lstDirectorios.List(lstDirectorios.ListIndex) ' Asignamos el valor del objeto elegido a la variable Ruta
X = Ruta 'Le asignamos el valor de Ruta a X
Winsock1.SendData X ' Enviamos X
Donde = "Directorios" ' Le decimos donde volcar lo recibido
lstDirectorios.Clear ' Limpiamos
lblDirRemoto.Caption = Ruta ' Cambiamos caption
End Sub
_____________________________________
Hasta aquì el cliente, ahora vamos al Servidor:
1 Winsock: Winsock1
1 DirListBox: Directorios
1 FileListBox: Archivos
Còdigo:
Evento Load del Formulario:
Código:
Private Sub Form_Load()
Winsock1.LocalPort = "8080" 'Establecemos el puerto
Winsock1.Listen ' Y lo ponemos a la escucha
End Sub
Evento ConnectionRequest de Winsock1:
Código:
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
If Winsock1.State <> sckClosed Then Winsock1.Close 'Evaluamos el estado de Winsock
Winsock1.Accept requestID 'Aceptamos la conexiòn
frmServidor.Caption = "Conectado con: " & Winsock1.RemoteHostIP 'Cambiamos el caption, que nos informa si el server està conectado o no
End Sub
Evento Close de Winsock1:
Código:
Private Sub Winsock1_Close()
frmServidor.Caption = "Servidor" ' Si se cierra el Winsock, cambiamos el caption
End Sub
Evento Error de Winsock1:
Código:
Private Sub Winsock1_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)
Winsock1.Close ' Si hay error, cerramos
End Sub
Código:
Private Sub pausa()
Dim comenzar
Dim controlar
comenzar = Timer
Do Until controlar >= comenzar + 0.01
controlar = Timer
DoEvents
Loop
End Sub
Evento Data_Arrival de Winsock1:
Código:
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Winsock1.GetData X, vbString ' Recibimos la data "X" en forma de String
Select Case X 'Evaluamos su valor
Case "Mostrar Archivos" 'Si dicho valor es Mostrar Archivos:
For i = 0 To Archivos.ListCount - 1 'Cada elemento en el FileListBox ( Archivos )
X = Archivos.List(i) ' Le asignamos uno x uno a X
Winsock1.SendData X ' Y lo enviamos de a uno
Call pausa ' Pausamos entre envio y envio
Next i 'Seguimos con el proximo elemento en el FileListBox
Case Else ' De no ser el valor "Mostrar Archivos"
Directorios.Path = X ' En X llega el directorio al que nos debemos posicionar
Archivos.Path = X ' Le asignamos el mismo direcotorio a Archivos
For i = 0 To Directorios.ListCount - 1 ' Enviamos los directorios de auno
X = Directorios.List(i) 'Le asignamos el valor uno a uno
Winsock1.SendData X 'Enviamos
Call pausa ' Pausamos
Next i 'Seguimos
End Select ' Cerramos el case
End Sub