Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    172

    [VB.NET] Uso tcpListener e multi Thread

    Ciao scusate se apro un nuovo post ma proprio non riesco a venirne fuori.

    Vi posto il mio problema vorrei creare un server multi conessione,pero con il codice che ho fatto riesco a conettere solo un clien alla volta e funziona bene,praticamente quando mi conetto con il secondo client il primo client non invia e riceve piu' dati,Dove sto sbagliando?


    Dim data() As Byte
    Dim T As Threading.Thread
    Dim Client As New TcpClient
    Const portNumber As Integer = 2399
    Dim tcpListener As New System.Net.Sockets.TcpListener(portNumber)

    Private Sub LoopInfinito()
    Try
    tcpListener.Start()
    While True
    Client = tcpListener.AcceptTcpClient
    Thread.Sleep(1000)

    '----------
    ReDim data(Client.ReceiveBufferSize)
    SendMessage("Server On Line!" & vbCrLf)
    '---read from server
    Client.GetStream.BeginRead(data, 0, _
    CInt(Client.ReceiveBufferSize), _
    AddressOf ReceiveMessage, Nothing)
    End While
    Catch ex As SocketException
    MsgBox(ex.ToString())
    Finally
    Client.Close()

    End Try
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    T = New Threading.Thread(AddressOf Me.LoopInfinito)
    T.Start()
    End Sub

    Grazie per la pazienza

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    172
    Cosa posso fare?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    172
    aiutatemi a capire vi prego!!!

  4. #4
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    è sbagliato come codice ! la devi modificare un pò...
    potresti fare cosi':
    quel loop infinito lo lasci cosi' com'è, intendo che il loop stà in un thread e quindi resta in ascolto di richieste da parte dei client. Poi, ogni volta che si collega un client devi creare un thread che dialogerà con il client.
    quindi per ogni client ci deve essere un thread !!!
    ovviamente ti servono altre strutture dati per gestire tutto, dipende da quello che devi fare...pensaci un pò prima di scrivere codice....
    I got the remedy

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    172
    Grazie!!

    Ma per creare un nuovo Thread devo usare anche un timer?
    Se no come posso dirgli che quando un client si è conesso deve preparare un altro in ascolto senza chiudere quello?

    Scusa ma sto imparando da solo e non so l'inglese per avere piu' info.

  6. #6
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    beh, i thread li crei dopo questa istruzione
    Client = tcpListener.AcceptTcpClient
    perchè dopo questa istruzione sai per certo che è stato collegato un nuovo client.

    Al nuovo thread li devi passare un po di dati, come minimo un TcpClient, in quanto ogni thread comunica con un client. inoltre, il server deve sapere quanti client ci sono e deve accede alle strutture dati di ogni client. basta pensare all'invio di un messaggio a tutti i client. per fare questo devi sapere dove sono tutti i tcpclient perchè uno alla volta, devi prendere il networkstream di ogni tcpclient e inviare i messaggi...
    I got the remedy

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    172
    ok grazie adesso che ho capito un pò studio e provo.

    Grazie per la risposta veloce!!!

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.