29/01/10 20:50
Darkos
Salve a tutti.
Vorrei realizzare una piccola chat in C# Client/Server.
Visto che mi hanno sconsigliato più volte il WinSock di Win vorrei sapere come utilizzare queste classi in .Net
La cosa che trovo strana è come sia possibile che per controllare l'arrivo di dati ci sia bisogno di un timer.. non occuperebbe troppa memoria?
O magari esiste un modo per creare degli handler?
In più volevo sapere se avete una guida da consigliarmi.. fin ora sono riuscito solo ad aprire il Listner, visto che mi sembra strano che devo mettere un timer per controllare se arrivata una richiesta di connessione
Grazie Mille
aaa
29/01/10 21:08
In che senso? Cosa hai usato? Cosa hai scritto?
Con la classe TcpListener crei un server che ascolta e con il metodo AcceptTcpClient attendi e accetti una connessione da un client ... cosa c'entra il timer?
29/01/10 21:26
Darkos
Ho scritto solo un tasto che al click mi apre il listner, non riesco ad andare avanti
Il punto è che mi serve un evento sotto il quale ci metto AcceptTcpClient
Non posso mica mettere un timer start e stop ogni volta che voglio controllare se arriva la richiesta.. e se arrivano dati ad esempio.. proprio questo è il mio dubbio.. come?
aaa
30/01/10 10:04
Postato originariamente da Darkos:
Ho scritto solo un tasto che al click mi apre il listner, non riesco ad andare avanti
Hai diverse soluzioni ... la prima, come ti è stato detto da Totem, è controllare periodicamente l'arrivo di una connessione tramite la Pending (con un timer oppure, meglio, all'interno di un apposito thread in un ciclo).
La seconda, come ti avevo suggerito, è quella di usare il metodo AcceptTcpClient per attendere l'arrivo di una connessione. Dato che il metodo AcceptTcpClient è "bloccante", dovrai usare necessariamente un altro thread ma eviterai loop e timer (userai solo una Sleep).
La terza, è quella di usare metodi "asincroni" come BeginAcceptTcpClient ed EndAcceptTcpClient tramite i quali puoi creare effettivamente un evento che viene chiamato in maniera asincrona quando si verifica la connessione.
Ma questo metodo è un po' piu' complesso da usarsi e se non hai un po' d'esperienza ti consiglio gli altri.
Il metodo AcceptTcpClient mi sembra la migliore soluzione anche perchè il programma del tipo che stai scrivendo, presuppone l'uso del multithreading ...
Ultima modifica effettuata da 30/01/10 10:07
30/01/10 15:08
Darkos
Grazie mille, funziona
Il punto è che funziona solo con un solo TcpListener ed un solo client.
Per creare una chat fra più utenti come posso fare?
Vorrei che i client si connettessero ad un server..
Ho provato con un array di TcpListener però mi da errore, mi dice che non è possibile trasformarlo in matrice
Avete delle idee? O meglio, sapete come posso fare?
aaa