El libro que me ayudo y lo encuentras en internet se llama
TCP/IP SOCKETS IN C# PRACTICAL GUIDE FOR PROGRAMMERS
USER CODE C# GUIA TOTAL DEL PROGRAMADOR
O en la libreria
C# COMO PROGRAMAR
SEGUNDA EDICION
EDITORIAL: PEARSON PRENTICE HALL
AUTORES: HARVEY M. DEITEL Y PAUL J.DEITEL
Yo vi muy complicado usar TCP, y aplique el UDP para hacer broadcast y de esa manera mandar el mensaje a todos los weyes del chat, mas que nada fue un chat room.
Pero contestando tus dudas,
Los Threads(Hilos) permiten crear subprocesos de tu programa principal (yo lo relaciono con el main jajaj) y en cada subproceso correr un metodo de tu programa ya sea el metodo de recibir o escuchar etc... de esa manera no se cuelga o se traba tu aplicacion.
Te recomiendo que leas sobre sockets sincronos y asincronos.
Y porque hay que convertir a bytes
Bueno la comunicacion entre equipos que estan en la red se lleva a cabo en bits, muy bien no se acerca de eso,pero cuando los conviertes a bytes tienes que decir en que tipo de codificacion(formato) ASCII o UNICODE. Eso es para mandar el texto.
bytes[] sendbuffer = Encoding.ASCII.GetBytes(string)
Para recibir el texto , se hace lo contrario decodificas los bytes en el formato adecuado para mostrar las letras.
string mensaje = Encoding.ASCII.GetString(tu arreglo de bytes en donde reciviste el mensaje)
No se si me explique bien
Si te quedan dudas me avisas
TCP/IP SOCKETS IN C# PRACTICAL GUIDE FOR PROGRAMMERS
USER CODE C# GUIA TOTAL DEL PROGRAMADOR
O en la libreria
C# COMO PROGRAMAR
SEGUNDA EDICION
EDITORIAL: PEARSON PRENTICE HALL
AUTORES: HARVEY M. DEITEL Y PAUL J.DEITEL
Yo vi muy complicado usar TCP, y aplique el UDP para hacer broadcast y de esa manera mandar el mensaje a todos los weyes del chat, mas que nada fue un chat room.
Pero contestando tus dudas,
Los Threads(Hilos) permiten crear subprocesos de tu programa principal (yo lo relaciono con el main jajaj) y en cada subproceso correr un metodo de tu programa ya sea el metodo de recibir o escuchar etc... de esa manera no se cuelga o se traba tu aplicacion.
Te recomiendo que leas sobre sockets sincronos y asincronos.
Y porque hay que convertir a bytes
Bueno la comunicacion entre equipos que estan en la red se lleva a cabo en bits, muy bien no se acerca de eso,pero cuando los conviertes a bytes tienes que decir en que tipo de codificacion(formato) ASCII o UNICODE. Eso es para mandar el texto.
bytes[] sendbuffer = Encoding.ASCII.GetBytes(string)
Para recibir el texto , se hace lo contrario decodificas los bytes en el formato adecuado para mostrar las letras.
string mensaje = Encoding.ASCII.GetString(tu arreglo de bytes en donde reciviste el mensaje)
No se si me explique bien
Si te quedan dudas me avisas