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

    [VB6] Winsock: Server che invia Lista di Pc connessi

    Ho un server dove i client si connettono a questo su unica porta, il server inserisce l' ip in una ListView1.ListItems.Add , , Winsock1(Index).RemoteHostIP, 1, 1
    bene i vari client dovrebbero essere aggiornati dal server che dovrebbe inviare la ListView popolata, ai vari client, ho provato in questo modo ma mi aggiorna solo un client:

    codice:
    Private Sub Command3_Click()
    Dim i
     For i = 1 To ListView1.ListItems.Count
      Winsock1(NumSockets).SendData ListView1.ListItems(i) & vbCrLf
      DoEvents
      Next
        Close
    End Sub
    In che modo è possibile aggiornare anche gli altri client?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Stai inviando i dati solamente al client connesso al socket indicizzato da

    NumSockets

  3. #3
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303
    così credo che dovrebbe andare:

    codice:
    Dim i, n As Integer
     For i = 1 To ListView1.ListItems.Count
       For n = 1 To NumSockets
         Winsock1(n).SendData ListView1.ListItems(i).Text
           DoEvents
            Next
              Next
                Close
    Però così alla connessione di un nuovo client questo riceverà la lista corretta, ma a quelli già connessi si andrà ad aggiungere la lista più la lista, invece a questi dovrei aggiornare solo le new entry.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Mi sembra ovvio che i client dovranno cancellare la propria lista quando ne ricevono un'altra, considerando la prima non piu' valida ...

    P.S. Ma a che ti serve il Close finale?

  5. #5
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303
    Il punto è proprio questo, se scrivo.

    codice:
    Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Dim dati As String
    List2.Clear
    Winsock1.GetData dati
    List2.AddItem dati
    End Sub
    il server mi invia la lista ma me ne aggiunge uno solo, come vado vado avanti?
    Per il close in entrambi i casi mi sono dimenticato di cancellarli, in quanto ho fatto delle prove ad inserire i dati ricevuti in un file di testo

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Beh ... e' ovvio ... se inserisci il Clear nel DataArrival ...

    Devi sempre tenere conto (nessuno lo fa perche' non si considera *come* funziona la comunicazione tra socket ...) che i dati *non* arrivano obbligatoriamente tutti insieme nell'evento DataArrival, ma a blocchi e l'evento viene chiamato piu' volte ...

  7. #7
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303
    potresti fare un piccolo esempio

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Esempio:

    1) tu invii 18K di dati tramite un ciclo

    2) viene chiamata la dataarrival una prima volta e ti vengono consegnati i primi 8 K di dati

    3) viene chiamata la dataarrival una seconda volta e ti vengono consegnati altri 8 K di dati

    4) viene chiamata la dataarrival una terza volta e ti vengono consegnati i rimanenti 2 K di dati che avevi trasmesso, oppure altri dati che hai trasmesso poco dopo insieme a questi 2 K

  9. #9
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303
    Mi Arrendo...

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    E perche'? Non ti e' sufficiente l'esempio?

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.