Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [VB .NET] Tcpclient Sincrono

    Salve a tutti...da poco ho deciso di sbattere la testa sulle Socket in quanto prima ero abituato alle comode Winsock...ma comunque se hanno apportato questa modifica ci saranno dei validi motivi e per questo accetto il cambiamento. Dopo ore di studio sul sito delle msdn sono riuscito a creare un applicazione Client che usa le classi System.Net.Sockets.TcpClient e System.Net.Sockets.NetworkStream.
    Ho usato questo per connettermi e ricevere la prima stringa :
    codice:
     tcpclient.Connect("mail.tin.it", 25)
            netstream = tcpclient.GetStream()
    
            Dim bytes(tcpclient.ReceiveBufferSize()) As Byte
            netstream.Read(bytes, 0, bytes.Length)
    
            Dim stringar As String
            stringar += System.Text.Encoding.ASCII.GetString(bytes)
            TextBox.Text += stringar & vbCrLf
    questa per inviare delle stringhe:
    codice:
       Dim stringas() As Byte
            stringas = System.Text.Encoding.ASCII.GetBytes(TextBox3.Text & vbCrLf)
            netstream.Write(stringas, 0, stringas.Length)
    Il Client cammina però opera su un solo thread; provando l'applicazione infatti si blocca prima d eseguire i comandi e quando si deve connettere.
    Come faccio ad eliminare questo?? Ho girato un pò e ho scoperto che occorre utilizzare la classe Thread per gestire dei Multithreading. Ho provato ma senza arrivare ad una conclusione.

    Potete aiutarmi?? Grazie a priori
    Provoca Il Più Bravo E Morirai Come Uno Schiavo

  2. #2
    Ciao Napster,
    per evitare il "blocco" dell'applicazione durante la connessione e l'invio dei dati puoi
    usare, cm hai già anticipato, la classe system.threading.thread; al momento della creazione
    del nuovo oggetto thread, cm argomento ci metti l'indirizzo del metodo che vuoi eseguire come thread secondario...
    ti faccio un esempio:
    supponi che il tuo metodo di connessione si chiama tcp_Connect();

    la creazione del thread sarà così:

    dim trdConnect as new system.threading.thread(address of tcp_Connect)

    a questo punto puoi far partire il thread secondario che eseguira il metodo a cui punta...

    trdConnect.Start


    Spero d'esser stato chiaro :-)

    Ciao
    Nulla è impossibile

  3. #3
    se ho capito bene ho provato così:
    codice:
    Public Sub Connetti()
     tcpclient.Connect("mail.tin.it", 25)
    End Sub
    poi nell'evento del bottone "Connetti a server"
    codice:
    dim trdConnect as new system.threading.thread(address of Connetti)
    Connetti()
    trdConnect.Start
    
      netstream = tcpclient.GetStream()
    
            Dim bytes(tcpclient.ReceiveBufferSize()) As Byte
            netstream.Read(bytes, 0, bytes.Length)
    
            Dim stringar As String
            stringar += System.Text.Encoding.ASCII.GetString(bytes)
            TextBox.Text += stringar & vbCrLf
    
    ecc.. ecc...
    è giusto così??
    Provoca Il Più Bravo E Morirai Come Uno Schiavo

  4. #4
    nessuna risposta
    Provoca Il Più Bravo E Morirai Come Uno Schiavo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.