hemmaus (Normal User)
Pro
Messaggi: 96
Iscritto: 15/07/2009
|
Salve a tutti.
Ho bisogno di aiuto per la gestione corretta di un winsock.
Uso il codice seguente:
Codice sorgente - presumibilmente VB.NET |
Private Sub SockOP_ConnectionRequest(IndexOP As Integer, _ ByVal requestIDOP As Long) NumsocketsOP = NumsocketsOP + 1 Load SockOp(NumsocketsOP) SockOp(NumsocketsOP).Accept requestIDOP End Sub
|
per incrementare il socket della connessione ad ogni interrogazione del client.
In modo che se voglio comunicare con il client NumsocketsOP=1 farò winsock1(numsocketsOP).send data etc. etc.
Tuttavia, , succede che diversi clients chiamino contemporaneamente il server. A questo punto, e non riesco a capire il perchè, a più clients viene assegnato lo stesso Numsockets. Probabilmente le chiamate al winsock server sono contemporanee ?
Al momento risolvo inserendo i valori in una listbox e poi li controllo via via che arrivano i socket se esiste già modifico.
Ma vorrei capire il perchè.
Attendo lustri. Grazie
Ultima modifica effettuata da hemmaus il 27/08/2009 alle 17:57 |
|
GrG (Member)
Guru^2
Messaggi: 3430
Iscritto: 21/08/2007
|
sicuro di aver dichiarato NumsocketsOP fuori dalla sub?
|
|
hemmaus (Normal User)
Pro
Messaggi: 96
Iscritto: 15/07/2009
|
Postato originariamente da GrG:
sicuro di aver dichiarato NumsocketsOP fuori dalla sub? |
STAI SCHERZANDO VERO?
Codice sorgente - presumibilmente VB.NET |
Option Explicit Public NumSockets As Integer
|
Altre idee ? |
|
GrG (Member)
Guru^2
Messaggi: 3430
Iscritto: 21/08/2007
|
lol, non ti scaldare, a volte delle dimenticanze capitano, mai escludere niente...
comunque alla fine del nome nella dichiarazione manca OP
|
|
muteblaster (Member)
Pro
Messaggi: 87
Iscritto: 16/07/2009
|
Postato originariamente da hemmaus:
Tuttavia, , succede che diversi clients chiamino contemporaneamente il server. A questo punto, e non riesco a capire il perchè, a più clients viene assegnato lo stesso Numsockets. Probabilmente le chiamate al winsock server sono contemporanee ?
Al momento risolvo inserendo i valori in una listbox e poi li controllo via via che arrivano i socket se esiste già modifico.
Ma vorrei capire il perchè.
Attendo lustri. Grazie |
la contemporaneita' dei processi non e' una cosa da vb6 non penso che le operazioni avvengano in contemporanea.......
potrebbe essere che l'incremento della variabile non corrisponda all'incremento corretto dell'indice dello winsock......
se l'indice e' assegnato correttamaente e' probabile che venga richiamato un indice sbagliato al momento del senddata....... Ultima modifica effettuata da muteblaster il 27/08/2009 alle 23:46 |
|
hemmaus (Normal User)
Pro
Messaggi: 96
Iscritto: 15/07/2009
|
Postato originariamente da GrG:
lol, non ti scaldare, a volte delle dimenticanze capitano, mai escludere niente...
comunque alla fine del nome nella dichiarazione manca OP |
Grg scusa non volevo sembrarti scaldato.
Tutto ok, infatti capita molto spesso di non dichiarare.
Al momento ho risolto intercettando il client e chiudendo il socket corrispondente alla doppia registrazione. Se qualcuno ha un'idea migliore ! |
|
hemmaus (Normal User)
Pro
Messaggi: 96
Iscritto: 15/07/2009
|
Abbiate pazienza.
Ma perchè se ho un solo client collegato nella funzione che ho postato all'inizio mi arriva un solo requestID invece se ho 2 clients mi arrivano 4 requestID ???
Io mi sto perdendo, invoco il vostro prezioso aiuto.
|
|
GrG (Member)
Guru^2
Messaggi: 3430
Iscritto: 21/08/2007
|
Bhè il codice che hai postato nel primo post è corretto... forse il problema risiede in un altro punto del codice dove magari erroneamente l'incrementi...
|
|
hemmaus (Normal User)
Pro
Messaggi: 96
Iscritto: 15/07/2009
|
No il problema non è dovuto all'incremento della variabile.
Ho notato che in fase di registrazione del client, lo stesso client invia più richieste di connessioni. Non è un errore neanche del client.
Ho fatto in modo che fino a quando la richiesta di connessione di ciascun client non termini il numscokets non viene incrementato.
Funziona perfettamente.
Ciao, grazie a tutti.
|
|