duda control winsock

Iniciado por peib0l, 30 Noviembre 2008, 23:07 PM

0 Miembros y 1 Visitante están viendo este tema.

peib0l

buenas e echo un programa para transferir archivos ente pc´s pero el problema es que salta error y no se porque no se si sera cosa del router o del programa... alguna idea para solucionarlo

si quieren mas info solo pregunten les doy todo lo que quieran.. incluido el source..


Gracias & Salu2

rdzlcs

Pues seria util saber la clase de error que tira, o si muertras el code mucho mejor...

SAludos
Navegando en un mar de unos y ceros. Saltando de capa en capa por un modelo que lejos de ser seguro, nos da la libertad de Ser y No Ser.

peib0l

Cita de: CL1O en 30 Noviembre 2008, 23:10 PM
o si muertras el code mucho mejor...


Option Explicit
Private Declare Function GetFileTitle _
   Lib "comdlg32.dll" _
   Alias "GetFileTitleA" ( _
   ByVal lpszFile As String, _
   ByVal lpszTitle As String, _
   ByVal cbBuf As Integer) As Integer
Dim Flag As Boolean
Dim lBytes As Long
Dim lFileSize As Long
  Private Sub Form_Load()
     txtIP = "127.0.0.1"
     txtIP.Enabled = False
     txtPuerto = "3000"
     txtPuerto.Enabled = False
     txtArchivo.Enabled = False
     cmdBuscar.Enabled = False
     cmdEnviar.Enabled = False
     cmdCambiar.Enabled = False
     cmdConectar.Enabled = False
     cmdEscuchar.Enabled = False
       
End Sub
Private Sub cmdSalir_Click()
End
End Sub

Private Sub cmdCliente_Click()
     txtIP = "127.0.0.1"
     txtIP.Enabled = False
     txtPuerto = "3000"
     txtPuerto.Enabled = False
     txtArchivo = ""
     txtArchivo.Enabled = True
     cmdBuscar.Enabled = True
     cmdEnviar.Enabled = False
     cmdCambiar.Enabled = True
     cmdConectar.Enabled = True
     cmdEscuchar.Enabled = False
     Me.Caption = "Cliente"
End Sub
Private Sub cmdConectar_Click()
     On Error Resume Next

     Winsock1.Connect txtIP, txtPuerto
     cmdConectar.Enabled = False
   End Sub

Private Sub cmdEnviar_Click()
  Dim sFileName As String

  If Trim(txtArchivo) = "" Then
  MsgBox "Debe elegir un archivo"
  Exit Sub
   End If
  If Dir(txtArchivo) <> "" Then
    sFileName = GetFileName(txtArchivo)

   Winsock1.SendData "|Archivo|" & FileLen(txtArchivo) & "|" & sFileName
Else
    MsgBox "El archivo no existe"
  End If
  End Sub
    Private Sub cmdBuscar_Click()
   With CommonDialog1
        .FileName = vbNullString
        .ShowOpen
        If .FileName <> "" Then
           txtArchivo = .FileName
           cmdEnviar.Enabled = True
        End If
     End With
End Sub
Private Sub cmdCambiar_click()
txtIP.Enabled = True
txtPuerto.Enabled = True
End Sub

  Private Sub Winsock1_Close()
     On Error Resume Next
     cmdConectar.Enabled = True
     cmdEnviar.Enabled = False
   
     Winsock1.Close
     MsgBox "La Conexion se ha cerradado", vbInformation
     txtIP.Enabled = False
     txtPuerto.Enabled = False
     txtArchivo.Enabled = False
     cmdBuscar.Enabled = False
     cmdEnviar.Enabled = False
     cmdCambiar.Enabled = False
     cmdConectar.Enabled = False
     cmdEscuchar.Enabled = False
End Sub

Private Sub Winsock1_Connect()
     cmdConectar.Enabled = False
     cmdEnviar.Enabled = True
     MsgBox "Conectado correctamente al servidor"
  End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
     Dim sData As String
     Winsock1.GetData sData, vbString
     If sData = "|Ok|" Then Call Enviar_Archivo
End Sub

  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)
      On Error Resume Next
      cmdConectar.Enabled = True
      cmdEnviar.Enabled = False
      Winsock1.Close
     MsgBox "Error al cerrar la conexion"
End Sub

  Private Sub Enviar_Archivo()
      Dim Size As Long
     Dim arrData() As Byte
      Open txtArchivo For Binary Access Read As #1
       Size = LOF(1)
      ReDim arrData(Size - 1)
     Get #1, , arrData
        Close
         Winsock1.SendData arrData
  End Sub

  Private Function GetFileName(sPath As String)
     Dim sBuffer     As String * 255
      Dim sTemp       As String
      GetFileTitle sPath, sBuffer, Len(sBuffer)
     GetFileName = Left(sBuffer, InStr(1, sBuffer, Chr(0)) - 1)
End Function

Private Sub cmdServidor_Click()
     txtIP = ""
     txtIP.Enabled = False
     txtPuerto = "3000"
     txtPuerto.Enabled = False
     txtArchivo = ""
     txtArchivo.Enabled = False
     cmdBuscar.Enabled = False
     cmdEnviar.Enabled = False
     cmdCambiar.Enabled = True
     cmdConectar.Enabled = False
     cmdEscuchar.Enabled = True
     Me.Caption = "servidor"
    End Sub

     
   Private Sub cmdEscuchar_Click()
     On Error GoTo error_handler
     With Winsock2

         .LocalPort = txtPuerto

         .Listen
     End With
     cmdEscuchar.Enabled = False
     Exit Sub
error_handler:
     MsgBox Err.Description
End Sub


Private Sub Winsock2_ConnectionRequest(ByVal requestID As Long)
     On Error GoTo error_handler

     cmdEscuchar.Enabled = False
     With Winsock2
   
        .Close
         .Accept requestID
     End With

     MsgBox "Conexion recibida"
      Exit Sub
error_handler:
      MsgBox Err.Description, vbCritical, "Winsock2_ConnectionRequest"
  End Sub
 
   Private Sub Winsock2_Close()
     On Error GoTo error_handler

     cmdEscuchar.Enabled = True
    Winsock2.Close

      MsgBox "Conexion cerrada"
     Exit Sub
error_handler:
MsgBox Err.Description, vbCritical, "Winsock_Close"
End Sub

Private Sub Winsock2_Connect()
     MsgBox "Conexion aceptada", vbInformation
End Sub


Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long)

      Dim arrData()   As Byte
     Dim vData       As Variant

     If Flag = False Then
          Winsock2.GetData vData, vbString
         If Mid(vData, 1, 9) = "|Archivo|" Then
              Flag = True
             lBytes = 0
            vData = Split(vData, "|")
              lFileSize = vData(2)

           Winsock2.SendData "|Ok|"


             Open App.Path & "\" & vData(3) For Binary Access Write As #1
        End If
    End If

     If Flag Then

         lBytes = lBytes + bytesTotal

          Winsock2.GetData arrData


           Put #1, , arrData

          If lBytes >= lFileSize Then
         
             Close #1
         
             Flag = False
             lBytes = 0
             
              MsgBox "El archivo se ha recibido por completo"
        End If
   End If


End Sub


Private Sub Winsock2_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)

     On Error Resume Next

    cmdEscuchar.Enabled = True
 
     Winsock2.Close

     MsgBox "La Conexion se ha cerrado", vbInformation
End Sub

ssccaann43 ©

Podrías especificar en que linea te arroja el error?  :-\
- Miguel Núñez
Todos tenemos derechos a ser estupidos, pero algunos abusan de ese privilegio...
"I like ^TiFa^"

aaronduran2

Lo probé junto a él y no es que de error en el código, es que salta una ventana diciendo que no se puede conectar. Probamos con un puerto y conectó, pero desconectó al instante.

peib0l

exacto lo qeu dice ADN y no sabemos por qeu pensamos que es cosa del router o firewall del mismo pero nosabemos... alguien que arroje algo de inspiracion???


Salu2

ssccaann43 ©

Cita de: aaronduran2 en  1 Diciembre 2008, 23:05 PM
Lo probé junto a él y no es que de error en el código, es que salta una ventana diciendo que no se puede conectar. Probamos con un puerto y conectó, pero desconectó al instante.

Al momento de desconectar arroja un mensaje?

Pues no creo que sea por el code.
- Miguel Núñez
Todos tenemos derechos a ser estupidos, pero algunos abusan de ese privilegio...
"I like ^TiFa^"

aaronduran2

Probamos con diferentes puertos y no iba ninguno, ni siquiera mostraba nada. Luego probamos con el 21, y después de conectar (aparecía un mensaje confirmándolo) se desconectaba repentinamente (avisando con otro mensaje).

peib0l

entonces nadie sabe como solucionarlo???  :( :( :-( :-( :-(


Salu2