Oppure

Loading
14/06/08 5:58
salve ragazzi
nel mio programma di chat multiclient e' da qualche giorno che sto' facendo varie prove per vedere quale e' il metodo migliore per inviare i messaggi a tutti client connessi....
ogni volta che un client si connette l'indice del winsock aumenta ed io lo ho legato ad una variabile di tipo interger...al momento della connessione...
If clientindex = 1 Then
     Load Ws(clientindex)
     Ws(clientindex).Close
     Ws(clientindex).Accept requestID
     clientindex = clientindex + 1
  ElseIf clientindex > 1 Then
     Load Ws(clientindex)
     Ws(clientindex).Close
     Ws(clientindex).Accept requestID
     clientindex = clientindex + 1
  End If
 lst(0).AddItem clientindex - 1


quando e' ora di inviare i messaggi a tutti i client faccio un ciclo for con tutti gli elementi della lst(0) che dovrebbero corrispondere all'indice winsock
 For i = (lst(0).ListCount - 1) To 0 Step -1
   On Error Resume Next
   If Ws(lst(0).List(i)).State = 7 Then
     Ws(lst(0).List(i)).SendData "wow/-/" & "ciao"
   End If
  Next i


il problema e' che facendo cosi' mi invia il messaggio solo all'ultimo client connesso....
vi invio anche un esempio.....
14/06/08 7:24
gantonio
Sei sicuro che non ci sia qualche errore mascherato dalla On Error?

Elimina temporaneamente la On Error e riprova ...

Inoltre, hai controllato che la If venga sempre eseguita?

P.S. Non usare codici numerici (ad esempio il 7) ma le relative costanti letterali che sono piu' leggibili ...
aaa
14/06/08 9:14
non ci sono errori.....
anche se tolgo on error e tolgo pure la verifica della connessione ( cioe' = 7 ) non mi da errore....

ho provato anche il alti modi....
 For i = 1 To Ws().UBound
    Ws(i).SendData "wow/-/" & "ciao"
 Next i

 oppure
 
 For i = 0 To clientindex - 1
    Ws(i).SendData "wow/-/" & "ciao"
 Next i


il risultato e' sempre lo stesso lo da' solo all'ultimo elemento della lista....
e' come se il ciclo for non venga eseguito ma e' impossibile sono 3 righe scarse di codice dove puo' stare il problema....
sto' provando tutto sullo stesso computer ho fatto partire il server(girando in localhost) e due client , ma non credo stia qui' il problema.....

Ultima modifica effettuata da 14/06/08 9:22
14/06/08 9:33
gantonio
Sei sicuro che i due client siano entrambi connessi ?

Non ho visto il codice che usi per il client e per il server, ma penso che ci sia un problema nella multiconnessione dei client ... probabilmente, gestisci correttamente solamente la connessione dell'ultimo client che si presenta ...

Quando ho un po' di tempo, scarico i programmi e ci do' un'occhiata ...
Ultima modifica effettuata da gantonio 14/06/08 9:34
aaa
14/06/08 9:57
ovviamente il programma di chat non si riduce a questo , solo che ho fatto una bozza di codice per dare una idea dell'invio a tutti i client come lo faccio.....
comunque l'esempio si riduce alle righe che ho scritto accettazione della connessione ed invio ......

ti ringrazio di darci un occhio perche' io davvero non capisco dove stia l'errore....comunque se hai una idea migliore di come si possa fare l'accettazione della connessione e l'invio a tutti i client ben accetto ogni consiglio , mi hai sempre dato consigli piu' che preziosi.....
adesso vado un po' OT ma questo modo di accettare le connessioni non e' privo di problemi , infatti io non faccio altro che accettare ed aggiungere un valore senza preoccuarmi di rimpiazzare il numero dato agli winsock disconnessi ( ad esempio se il numero 2 si disconnette il nuovo prende il numero 3 e non rimpiazza il 2) ....comunque questo e' un altro problema....

16/06/08 18:38
ragazzi nessuno ha una idea di dove stia il problema?.....
16/06/08 20:01
P4p3r0g4
semplice.
tutti i tuoi ws lavorano sulla stessa porta.
aaa
17/06/08 9:50
ero arrivato ad una conclusione simile solo che non avendo per ora la possibilita' di provarlo su pc diversi avevo bisogno di una conferma piu' autorevole della mia supposizione.....

grazie dell'interessamento.....