Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Winsock1 - connessioni dei client simultanee ed errore di input.
Forum - Visual Basic 6 - Winsock1 - connessioni dei client simultanee ed errore di input.

Avatar
hemmaus (Normal User)
Pro


Messaggi: 96
Iscritto: 15/07/2009

Segnala al moderatore
Postato alle 17:48
Giovedì, 27/08/2009
Salve a tutti.
Ho bisogno di aiuto per la gestione corretta di un winsock.

Uso il codice seguente:

Codice sorgente - presumibilmente VB.NET

  1. Private Sub SockOP_ConnectionRequest(IndexOP As Integer, _
  2.     ByVal requestIDOP As Long)
  3.     NumsocketsOP = NumsocketsOP + 1
  4.     Load SockOp(NumsocketsOP)
  5.     SockOp(NumsocketsOP).Accept requestIDOP
  6.  
  7. 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 il 27/08/2009 alle 17:57
PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 19:32
Giovedì, 27/08/2009
sicuro di aver dichiarato NumsocketsOP fuori dalla sub?

PM Quote
Avatar
hemmaus (Normal User)
Pro


Messaggi: 96
Iscritto: 15/07/2009

Segnala al moderatore
Postato alle 21:43
Giovedì, 27/08/2009
Testo quotato

Postato originariamente da GrG:

sicuro di aver dichiarato NumsocketsOP fuori dalla sub?



STAI SCHERZANDO VERO? :grr:


Codice sorgente - presumibilmente VB.NET

  1. Option Explicit
  2.  
  3. Public NumSockets As Integer



Altre idee ?

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 22:38
Giovedì, 27/08/2009
lol, non ti scaldare, a volte delle dimenticanze capitano, mai escludere niente...

comunque alla fine del nome nella dichiarazione manca OP

PM Quote
Avatar
muteblaster (Member)
Pro


Messaggi: 87
Iscritto: 16/07/2009

Segnala al moderatore
Postato alle 23:43
Giovedì, 27/08/2009
Testo quotato

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 il 27/08/2009 alle 23:46
PM Quote
Avatar
hemmaus (Normal User)
Pro


Messaggi: 96
Iscritto: 15/07/2009

Segnala al moderatore
Postato alle 0:19
Venerdì, 28/08/2009
Testo quotato

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:

PM Quote
Avatar
hemmaus (Normal User)
Pro


Messaggi: 96
Iscritto: 15/07/2009

Segnala al moderatore
Postato alle 10:27
Venerdì, 28/08/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.8-|:-|

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 13:41
Venerdì, 28/08/2009
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...

PM Quote
Avatar
hemmaus (Normal User)
Pro


Messaggi: 96
Iscritto: 15/07/2009

Segnala al moderatore
Postato alle 17:47
Sabato, 29/08/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.:k:

PM Quote