PDA

View Full Version : [VB.NET] funzionamento thread


Markitto
25-05-2008, 13:57
ciao ragazzi,
ecco la mia situazione
ho implementato un server che gestisce + connessioni da client contemporaneamente creando dei thread di 'ascolto'.
e fino a qua tutto ok..
se si collegano 2 client a questo server...e il client1 deve mandare un messaggio al client2 (una specie d chat)...il server fungerà da 'ponte'
come faccio a far riconoscere al server...ke il messaggio arrivato dal client1 e quindi sul thread di ascolto deve essere inoltrato sull'altra connessione del thread del client 2...
io penso ke mi serva il pid dei thread creati x riconoscerli usando la menagethreadid pero poi nn so ke fare:D
spero di essere stato kiaro

aiutatemi pls:confused:

Markitto
25-05-2008, 18:19
nessuno sa indicarmi una via da seguire:confused: ?

nuovoUtente86
25-05-2008, 21:22
Il server dovrà gestire una lista di Client...Il modo di identificare i client lo puoi decidere come meglio credi...a partire da un contatore progressivo..

f@bio80
26-05-2008, 10:36
chiaro dovrai fare una spece di registrazione/accreditamento.

Markitto
26-05-2008, 11:30
ok ma il mio problema è cm far riconoscere al server i flussi creati....e quindi scegliere di leggere da un flusso(dal client1) e scrivere sull'altro flusso(del client2) vi posto un pezzo d codice del server:
Public Sub StartServer()
Try
'viene creato un TcpListener: oggetto che "ascolta" il flusso tcp e viene avviato con parametri l'ip del server e la sua porta di ascolto
mTCPListener = New System.Net.Sockets.TcpListener(mServerIP, mPort)
mTCPListener.Start()
'crea un Thread per poter gestire più connessioni contemporaneamente e viene avviato
' il parametro del thread rappresenta l'indirizzo della routine DoTheListenig
'ogni volta che viene creato il thread si eseguira la routine DoTheListening
Dim myThread As New System.Threading.Thread(AddressOf DoTheListening) 'il thread permette di non rendere bloccante il gestore e quindi poter eseguire le istruzioni seguenti
myThread.Start()



'messaggio su console: "il server sta ascoltando su questa porta"
Console.WriteLine("The Server is now monitoring port " & CStr(mPort))
Catch ex As Exception
Console.WriteLine("Server startup failed with the following problem")
Console.WriteLine(ex.Message)
End Try
End Sub

il thread ke esegue DoTheListening fa accettare al listener un socket
(potrei anke far si ke il server inoltri a tutti il messaggio mandato da un client

f@bio80
26-05-2008, 20:13
il thread ke esegue DoTheListening fa accettare al listener un socket...

...socket su cui il client magari potrà scrivere le sue credenziali, magari cryptate con un meccanismo di chiave pubblica/chiave privata, in modo che il servere possa fare un match con una sua lista di accreditamenti...:)