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 - Aiuto listbox e winsock (VB.NET, posto qui perchè si parla di un componente vb6)
Forum - Visual Basic 6 - Aiuto listbox e winsock (VB.NET, posto qui perchè si parla di un componente vb6)

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
pinguino (Ex-Member)
Pro


Messaggi: 172
Iscritto: 26/12/2007

Segnala al moderatore
Postato alle 12:20
Lunedì, 03/01/2011
Salve a tutti.

Nell' evento connection request di un winsock, ho messo che deve aggiungere ad una listbox l' id della connessione, senza accettare.
Fin qui tutto bene, gli id vengono visualizzati nella listbox, ma c'è un problema quando voglio accettare la connessione.

Nell' evento click di un button ho messo che il winsock deve accettare la connessione con l' id selezionato nella listbox, ma ricevo un errore; errore che purtroppo non posso darvi poichè non essendo un componente vb.net ricevo solo il codice di quest' ultimo.
Però se può esservi utile ecco il codice dell' errore che ricevo:
Eccezione da HRESULT: 0x800A2736

comunque, ecco il codice che ho utilizzato:
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  2.         AxWinsock1.LocalPort = "120"
  3.         AxWinsock1.Listen()
  4.     End Sub
  5.  
  6.     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  7.         Dim id As Integer = ListBox1.SelectedItem
  8.         AxWinsock1.Close()
  9.         AxWinsock1.Accept(id)
  10.     End Sub
  11.  
  12.     Private Sub AxWinsock1_ConnectionRequest(ByVal sender As Object, ByVal e As AxMSWinsockLib.DMSWinsockControlEvents_ConnectionRequestEvent) Handles AxWinsock1.ConnectionRequest
  13.         ListBox1.Items.Add(e.requestID)
  14.     End Sub



Dove è che sbaglio?
La variabile id deve essere di tipo integer? O magari non è possibile accettare il winsock da un altro evento poichè la richiesta di connessione è gia avvenuta...
Non lo so, potreste darmi dei consigli?

Sò che non è codice vb6, ma le differenze tra i due linguaggi non sono molte, se volete potete anche aiutarmi con codice vb6, poi sarò io a convertirlo.

Grazie in anticipo, anche se non rispondete almeno avete letto la domanda :rotfl:. :k:

Ultima modifica effettuata da pinguino il 03/01/2011 alle 13:23
PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 14:16
Lunedì, 03/01/2011

1) Stai usando il componente COM da .NET, questo è SBAGLIATISSIMO. Ci sono delle classi .NET del namespace System.Net e System.Net.Sockets che sono state messe lì per un motivo.

2) Le differenze tra i due linguaggi SONO molte.

3) L'accept (credo) va chiamato per forza all'interno del gestore dell'evento connectionrequest oppure entro un timeout ben preciso.

PM
Avatar
pinguino (Ex-Member)
Pro


Messaggi: 172
Iscritto: 26/12/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 14:23
Lunedì, 03/01/2011
Testo quotato

Postato originariamente da HeDo:


1) Stai usando il componente COM da .NET, questo è SBAGLIATISSIMO. Ci sono delle classi .NET del namespace System.Net e System.Net.Sockets che sono state messe lì per un motivo.

2) Le differenze tra i due linguaggi SONO molte.

3) L'accept (credo) va chiamato per forza all'interno del gestore dell'evento connectionrequest oppure entro un timeout ben preciso.



1) Lo so, non ho bisogno che me lo dica tu per saperlo, io ho chiesto aiuto sul winsock quindi per ora lasciamo perdere system.net.socket, nella sezione .NET ho già chiesto un libro che parlasse dei del networking tramite sockets, me lo sarei studiato e avrei usato quelli... ma nessuno mi ha risposto... :-|
2) Mi riferivo alla sintassi.
3) D' accordo, allora hai qualche idea?, dato che in vb.net non ho la possibilità di creare una multiconnessione mediante l' utilizzo di una matrice...

Ultima modifica effettuata da pinguino il 03/01/2011 alle 14:26
PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 15:18
Lunedì, 03/01/2011
Testo quotato

Postato originariamente da pinguino:
Dato che in vb.net non ho la possibilità di creare una multiconnessione mediante l' utilizzo di una matrice...



????

interpreto: vuoi creare un server che accetti più di una connessione.
se così è, è veramente semplice, sia utilizzando il winsock (COM) sia System.Net.Sockets

http://www.visual-basic.it/articoli/ldlChat2.htm

crei un altro winsock e fai accettare da quest'ultimo la connessione.

mentre invece se usi le classi .net c'è un comodissimo metodo AcceptTcpClient della classe TcpListener che restituisce un TcpClient con cui è stata stabilita la connessione.

PM
Avatar
pinguino (Ex-Member)
Pro


Messaggi: 172
Iscritto: 26/12/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 15:24
Lunedì, 03/01/2011
Testo quotato

Postato originariamente da HeDo:

Testo quotato

Postato originariamente da pinguino:
Dato che in vb.net non ho la possibilità di creare una multiconnessione mediante l' utilizzo di una matrice...



????

interpreto: vuoi creare un server che accetti più di una connessione.
se così è, è veramente semplice, sia utilizzando il winsock (COM) sia System.Net.Sockets

http://www.visual-basic.it/articoli/ldlChat2.htm

crei un altro winsock e fai accettare da quest'ultimo la connessione.

mentre invece se usi le classi .net c'è un comodissimo metodo AcceptTcpClient della classe TcpListener che restituisce un TcpClient con cui è stata stabilita la connessione.



Lo so (per il winsock), è semplice in vb6, ma purtroppo dato che il winsock non fa parte di vb.net, non posso fare la multiconnessione... proverò comunque a leggere quel link, poi ti faccio sapere, perchè il programma che ho scritto ci ho messo 3 mesi per farlo, ed ho usato i winsock, ora che mi ritrovo a dover creare la lista delle connessioni in attesa non posso cambiare tipo di connessione...
In vb6 avrei potuto tranquillamente creare una multiconnessione, ovvero accettavo tutte le connessioni, poi per inviare un comando ad un server, sceglievo quale era la connessione a cui inviare il comando e sarebbe finita li.

Comunque sono riuscito anche a creare un sistema che mi visualizza la lista degli IP in attesa, ma il problema è come al solito scegliere quello a cui connettersi, ovvero per ogni connection request accetto ogni connessione, visualizzo e aggiungo l' ip remoto in una listbox, dopodichè chiudo il winsock per poi rimetterlo in listen. dopodichè il server, una volta chiusa la connessione con il client, si riconnette, ma questa volta però il client sà quale IP io ho accettato, e dunque se l' IP dell' host remoto che chiede la connessione è quello che ho accettato nella listbox, quest' ultimo accetta definitivamente la connessione, peccato che questo non so perchè, ma non avviene, ovvero non si verifica proprio il secondo connection request, anche se il server inizia a connettersi...

Ultima modifica effettuata da pinguino il 03/01/2011 alle 15:36
PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 15:36
Lunedì, 03/01/2011
Testo quotato

Postato originariamente da pinguino:
Lo so (per il winsock), è semplice in vb6, ma purtroppo dato che il winsock non fa parte di vb.net, non posso fare la multiconnessione...




falso

Testo quotato


proverò comunque a leggere quel link, poi ti faccio sapere, perchè il programma che ho scritto ci ho messo 3 mesi per farlo, ed ho usato i winsock, ora che mi ritrovo a dover creare la lista delle connessioni in attesa non posso cambiare tipo di connessione...



ma che tipo di connessione? cosa vuol dire "tipo di connessione"?

Testo quotato


In vb6 avrei potuto tranquillamente creare una multiconnessione, ovvero accettavo tutte le connessioni, poi per inviare un comando ad un server, sceglievo quale era la connessione a cui inviare il comando e sarebbe finita li.



puoi fare la stessa identica cosa in vb.net

ma la mia domanda resta, se il codice è al 98% vb6, perchè passare a vb.net? tanto valeva rimanere a vb6, finire un progetto già morto in partenza e buona notte. Perchè crucciarsi a fare le stesse cose in vb.net forzandole in un ambiente che è TOTALMENTE diverso?

PM
Avatar
pinguino (Ex-Member)
Pro


Messaggi: 172
Iscritto: 26/12/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 15:38
Lunedì, 03/01/2011
Perchè quando iniziai il progetto ancora non sapevo per niente usare system.net.sockets, conoscevo solo i winsock, e la mia cocciutaggine mi ha fatto scegliere la via più semplice...

Il codice non è per il 98% vb6, ansi il contrario... l' unica parte di codice che è vb6 è quella per inviare e ricevere istruzioni, il resto è tutto vb.net.

Per "tipo di connessione" intendo che ormai l' intero programma si basa su ben 4 winsock e decine di funzioni, come farei a convertire tutto per far si che la connessione avvenga usando i sockets del vb.net? xD

Sarebbe un casino... tantovale rifare tutto da capo ma non mi conviene, pertanto per quanto riguarda la classe system.net.sockets sono ancora all' ABC...

Ultima modifica effettuata da pinguino il 03/01/2011 alle 15:44
PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 15:43
Lunedì, 03/01/2011
Testo quotato

Postato originariamente da pinguino:

Perchè quando iniziai il progetto ancora non sapevo per niente usare system.net.sockets, conoscevo solo i winsock, e la mia cocciutaggine mi ha fatto scegliere la via più semplice...

Per "tipo di connessione" intendo che ormai l' intero programma si basa su ben 4 winsock e decine di funzioni, come farei a convertire tutto per far si che la connessione avvenga usando i sockets del vb.net? xD

Sarebbe un casino... tantovale rifare tutto da capo ma non mi conviene... xD



che progetto è?
e poi guarda che le classi .net sono molto più semplici del winsock, semplicemente si basano su un'architettura diversa.

ad ogni modo guardati le classi TcpClient e TcpListener, sono di una semplicità disarmante.

PM
Avatar
pinguino (Ex-Member)
Pro


Messaggi: 172
Iscritto: 26/12/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 15:47
Lunedì, 03/01/2011
Si tratta di un remote administration tool, ma non ti preoccupare, non è un trojan, il server quando viene eseguito fa partire un setup che lo installa all' avvio automatico, e inoltre tra i programmi di windows c'è anche il setup per disinstallarlo.

L' idea è quella che uno può controllare i suoi pc per esempio dall' ufficio, anche se ne sono più di uno, senza necessariamente aprire le porte di 30.000 router.

Comunque il programma è quasi completo, funziona lo schermo remoto, che ti permette di cliccarci sopra e di scrvere come fa team viewer, puoi vedere la webcam, ricevere informazioni sul pc che stai controllando, inviare mail direttamente da li, il file manager che ti permette di viaggiare dentro le cartelle dell' HD e tant' altro... funziona tutto... manca solo questa diavolo di lista che mi sta facendo impazzire xD

PM
Pagine: [ 1 2 ] Precedente | Prossimo