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

    [VB6] Winsock: client e multiconnessione?

    ciao,
    la mia app è cos' composta:
    lato server questa è in grado di accettare connessioni multiple:

    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
        
        Load Winsock1(NumSockets)
      
        Winsock1(NumSockets).Accept requestID
        List3.AddItem Winsock1(NumSockets).Index & ": " & Winsock1(Index).RemoteHostIP & " Ora:" & Time & " " & Date
     
    
    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 "<%%<" & vtData
        ListView1.ListItems(n).ListSubItems.Add , , vtData, 1, 1
        Next
         
    End Sub
    lato client
    questo a connessione avvenuta riceverà una lista di tutti i client connessi al server:

    codice:
    Private Sub Command1_Click()
    
    On Error Resume Next
    Open App.Path & "\ip.txt" For Output As #1
    Close #1
    Timer1.Interval = 500
    Winsock1.Connect Text2.Text, Text3.Text
    Label5.Caption = "Ricerca.. IP"
    Timer3.Interval = 30
    End Sub
    codice:
    Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Dim dati As String
    
    Winsock1.GetData dati, vbString
    
     If Left(dati, 4) = "<%%<" Then
     Text1.Text = Replace$(Text1.Text & dati, "<%%<", "") & vbCrLf
     Exit Sub
     Else
     Open App.Path & "\ip.txt" For Output As #1
     Print #1, dati
     Close #1
    DoEvents
    Timer2.Enabled = True
    Timer2.Interval = 3000
    Timer3.Enabled = True
    End If
    bene l' applicazione funziona anche se come suggerito da qlc non ottimale.
    Adesso visto che i vari client connessi al server riceveranno una lista dei client connessi, come posso fare a far sì che se un client vuole connettersi ad un altro client presente nella lista senza passare dal server, ma restando connesso al server?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Mi sembrava di averti risposto ...

    Un client lo connetti ad un altro client con Winsock esattamente come fai per il server ...

    Il client che vuoi contattare si mette in ascolto e il primo fa la connessione ...

  3. #3
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303
    Originariamente inviato da oregon
    Mi sembrava di averti risposto ...

    Un client lo connetti ad un altro client con Winsock esattamente come fai per il server ...

    Il client che vuoi contattare si mette in ascolto e il primo fa la connessione ...
    ma se il client è connesso al server "questo ha già una connessione attiva", quando tento di connettermi ad un altro indirizzo, mi và in errore!

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ovviamente devi usare un secondo winsock nel client ...

  5. #5
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303
    Originariamente inviato da oregon
    Ovviamente devi usare un secondo winsock nel client ...
    ma se uso un altro winsock questo mi darà errore in quanto la porta è in uso

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma di che porta parli?

    Tu usi un winsock per connetterti con il server ad un determinato indirizzo e porta ... e un altro winsock per connetterti ad un altro qualsiasi computer ad un altro indirizzo e magari la stessa porta ...

    Non capisco il tuo problema ...

  7. #7
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303
    io ho fatto così:

    client:

    codice:
    Private Sub Form_Load()
        Winsock2.RemotePort = Text3.Text
        Winsock2.Listen
    End Sub
    codice:
    Private Sub Winsock2_ConnectionRequest(ByVal requestID As Long)
    If Winsock2.State <> sckClosed Then Winsock2.Close
     Winsock2.Accept requestID
    End Sub
    codice:
    Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long)
    Dim dati2 As String
    Winsock2.GetData dati2, vbString
    Text1.Text = Text1.Text & dati2 & vbCrLf
    End Sub
    codice:
    Private Sub Command4_Click()
    
    Winsock2.Connect Client.Text, Text3.Text
    End Sub

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Scusa, ma non capisco di quale codice stai parlando (client A? client B? server?) e cosa ha a che fare con la mia risposta ...

    In particolare, stai facendo il Listen e il Connect sullo stesso PC?

  9. #9
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303
    Originariamente inviato da oregon
    Scusa, ma non capisco di quale codice stai parlando (client A? client B? server?) e cosa ha a che fare con la mia risposta ...

    In particolare, stai facendo il Listen e il Connect sullo stesso PC?


    allora il lato client l' ho modificato aggiungendo un winsock2, il codice è quello descritto sopra, quindi tutti i client sono perfettamente uguali e dovranno essere distrubuiti. Per quanto riguarda le prove le stò facendo in un unica macchina, sarà forse questo il problema dell' errore?

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Potresti fare un elenco di porte su cui intendi far dialogare i sistemi ... perche' non ci sto capendo nulla ...

    E quando parli di errore, in particolare, quali sono i messaggi che ti vengono proposti ...?

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.