Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 36
  1. #1
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303

    [VB6] Winsock: Autenticare accesso?

    Ho delle difficoltà nel creare un' autenticazione al server con questo codice:
    Il client invia in entrambi i casi:

    codice:
    Private Sub Winsock1_Connect()
    Dim Password As String
    Password = Text5.Text
    Winsock1.SendData Password
    
    End Sub
    codice:
    Private Sub Winsock1_ConnectionRequest(Index As Integer, _
        ByVal requestID As Long)
       
        Text2.Text = Text2.Text & "Accettata connessione con : " & _
        Winsock1(Index).RemoteHostIP & vbCrLf
        ListView1.ListItems.Add , , Winsock1(Index).RemoteHostIP, 1, 3
        NumSockets = NumSockets + 1
        '//Increase Number of Sockets by one.
        Load Winsock1(NumSockets)
        '//Load a New Winsock Object Nusockets as Index Value
        Winsock1(NumSockets).Accept requestID
        List3.AddItem Winsock1(NumSockets).Index & ": " & Winsock1(Index).RemoteHostIP & " Ora:" & Time & " " & Date
        '//Accept the New Connection
      
        Label2.Caption = "Utenti in linea " & ListView1.ListItems.Count
        DoEvents
        Timer1.Enabled = True
        Timer1.Interval = 200
    End Sub
    
    Private Sub Winsock1_DataArrival(Index As Integer, ByVal _
        bytesTotal As Long)
        Dim vtData As String
        Dim n As Integer
        Winsock1(Index).GetData vtData, vbString
        Text2.Text = Text2.Text & vtData & vbCrLf
     
     On Error Resume Next
        For n = 1 To NumSockets
        Winsock1(n).SendData "inviolistapcconnessi" & vtData
        ListView1.ListItems(n).ListSubItems.Add , , vtData, 1, 1
        Next
    End Sub
    cosa che invece mi riesce con questo altro codice:

    codice:
    Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
     If Winsock1.State <> sckClosed Then Winsock1.Close
     Winsock1.Accept requestID
     
    End Sub
    
    Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    
    Dim Password As String
    Password = Text3.Text
    Static Autenticato As Boolean
    Dim Dati As String
    Winsock1.GetData Dati, vbString
    DoEvents
    List2.AddItem List2.Text & "remoto> " & Dati '& vbCrLf  ' Aggiunge il Testo
    
    If Autenticato = False Then
      If Dati = Password Then
        Autenticato = True
        List1.AddItem Winsock1.RemoteHostIP
        List2.AddItem "Welcome.."
        Winsock1.SendData "Welcome " & Winsock1.RemoteHostIP
      Else
        Winsock1.Close
      End If
      
    End If
    Come risolvo?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non ho capito ... con il primo codice invii la password ma non la tratti in ricezione ... e' ovvio che non funziona ...

  3. #3
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303
    Primo codice il server accetta solo una connessione:
    Il client si connette ad esso ed invia
    codice:
    Private Sub Winsock1_Connect()
    Dim Password As String
    Password = Text5.Text
    Winsock1.SendData Password
    End Sub
    Il server verifica:

    codice:
    Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
     If Winsock1.State <> sckClosed Then Winsock1.Close
     Winsock1.Accept requestID
     
    End Sub
    
    Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    
    Dim Password As String
    Password = Text3.Text
    Static Autenticato As Boolean
    Dim Dati As String
    Winsock1.GetData Dati, vbString
    DoEvents
    List2.AddItem List2.Text & "remoto> " & Dati '& vbCrLf  ' Aggiunge il Testo
    
    If Autenticato = False Then
      If Dati = Password Then
        Autenticato = True
        List1.AddItem Winsock1.RemoteHostIP
        List2.AddItem "Welcome.."
        Winsock1.SendData "Welcome " & Winsock1.RemoteHostIP
      Else
        Winsock1.Close
      End If
      
    End If
    
    End Sub
    La connessione è stata accettata.

    Ma se il servere accetta connessione multiple come inserisco l'autenticazione?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Nella Data_Arrival, quando gestisci array di Winsock, c'e' il parametro Index che ti permette di sapere a quale Winsock si riferiscono i dati ... in questo modo puoi gestire diverse password per diverse connessioni (o, anche, la stessa password ...) ....

    In realta' non vedo quale sia il problema ...

  5. #5
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303
    Il problema stà nel fatto che il client, si è disconnesso, ma al server succede che accetta la connessione in modo continuativo, ho fatto così:


    codice:
    Private Sub Winsock1_DataArrival(Index As Integer, ByVal _
        bytesTotal As Long)
        Dim vtData As String
        Dim n As Integer
        Dim Password As String
         Password = Text3.Text
         Static Autenticato As Boolean
    
        Winsock1(Index).GetData vtData, vbString
        Text2.Text = Text2.Text & vtData & vbCrLf
          
         If Autenticato = False Then
         If vtData = Password Then
        Autenticato = True
          ListView1.ListItems(n).ListSubItems.Add , , vtData, 1, 1
        Else
        Winsock1(Index).Close
      End If
      End If
    End Sub
    ma se la password è corretta accetta la connessione è fila tutto liscio.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Devi autenticare le singole connessioni ...

    Non va bene la dichiarazione

    Static Autenticato As Boolean

    in quanto cosi' puoi gestire solamente una connessione ...

    Devi preparare un array di boolean per gestire gli stati di tutte le connessioni ...

  7. #7
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303
    ma se così posso gestire solo una connessione ed al server non è presente nessuna connessione allora perchè non và

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    ma se così posso gestire solo una connessione ed al server non è presente nessuna connessione allora perchè non và
    Perdonami, ma non sto capendo nulla ... Ma che vuoi dire con questa frase?


    Se ti va di rispiegare tutto con calma, in dettaglio e con frasi complete e di senso compiuto ...

    E soprattutto evita di dire "non va" perche' per me non significa niente e non ti posso aiutare ... devi essere chiaro su errori e comportamenti del programma ...

  9. #9
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303
    ok,
    così come mi hai detto
    codice:
    Devi autenticare le singole connessioni ...
    
    
    in quanto cosi' puoi gestire solamente una connessione ...
    bene allora il server è in ascolto e non vi è nessuna connessione, lancio il client è chiedo di essere autenticato, se la pass è corretta, fila tutto liscio, ma se la pass è diversa, il client si disconnette, ma il server non fà la close.

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da x69asterix
    se la pass è corretta, fila tutto liscio
    ...

    ma se la pass è diversa, il client si disconnette, ma il server non fà la close.
    Che vuoi dire con "il server non fa la close" ?

    La close di che?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.