Oppure

Loading
27/08/09 15:48
hemmaus
Salve a tutti.
Ho bisogno di aiuto per la gestione corretta di un winsock.

Uso il codice seguente:

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è, :-o 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 27/08/09 15:57
aaa
27/08/09 17:32
GrG
sicuro di aver dichiarato NumsocketsOP fuori dalla sub?
aaa
27/08/09 19:43
hemmaus
Postato originariamente da GrG:

sicuro di aver dichiarato NumsocketsOP fuori dalla sub?


STAI SCHERZANDO VERO? :grr:


Option Explicit

Public NumSockets As Integer


Altre idee ?
aaa
27/08/09 20:38
GrG
lol, non ti scaldare, a volte delle dimenticanze capitano, mai escludere niente...

comunque alla fine del nome nella dichiarazione manca OP
aaa
27/08/09 21:43
muteblaster
Postato originariamente da hemmaus:

Tuttavia, :-|, succede che diversi clients chiamino contemporaneamente il server. A questo punto, e non riesco a capire il perchè, :-o 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 27/08/09 21:46
aaa
27/08/09 22:19
hemmaus
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. :k:
Tutto ok, infatti capita molto spesso di non dichiarare.
:rofl:

Al momento ho risolto intercettando il client e chiudendo il socket corrispondente alla doppia registrazione. Se qualcuno ha un'idea migliore !:idea:
aaa
28/08/09 8:27
hemmaus
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.8-|:-|
aaa
28/08/09 11:41
GrG
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...
aaa