Dudas desarrollando aplicacion cliente-servidor

Iniciado por llAudioslavell, 5 Enero 2012, 22:39 PM

0 Miembros y 1 Visitante están viendo este tema.

llAudioslavell

He avanzado con mi aplicacion.... trato de hacer un Chat para mi Red Lan y comenzare desde lo mas simple... me he estado guiando de el tutorial "elguille" y de otra guia mas..
hago este post para mencionarles las clases que he estado usando y  lo que entendi de cada una:

Servidor:

TcpListener--------> Espera la conexion del Cliente.
TcpClient----------> Proporciona la Conexion entre el Servidor y el Cliente.
NetworkStream---> Se encarga de enviar mensajes atravez de los sockets.
Thread-------------> He leido sobre esta clase pero la verdad no he llegado a una conclusion.

Cliente:

TCPClient-----------> Este se Conectara al Servidor
NetworkStream-----> Se encarga de enviar mensajes atravez de los sockets.
Thread---------------> .....


CLIENTE:

Para Conectarme:

(en el boton conectar)
- En el TcpClient, especifico la IP y el puerto atravez de su metodo connect.
- Preparo el NetworkStream para enviar mensajes con  su metodo GetStream a la IP que determine por el Puerto que tambien determine en el TcpClient.


Para enviar el mensaje:
(en el boton enviar)

Aqui tengo una gran duda...
Entendi que el mensaje se le  deve convertir de texto a bytes y no se porque razon ...
bueno ya una vez convertido el mensaje en Bytes ( y no se por que x'D) se escribe el mensaje en el NetworkSrtream a travez de su metodo Write


SERVIDOR:

Para Conectarme:

-Instancio la clase Thread y la clase TcpListener
-Especifico al TcpListener la IP y el Puerto.
-TcpClient = TcpListener.AcceptTcpClient 'hago esto para aceptar la peticion del Cliente
-Preparo al TcpClient para enviarle mensaje a travez del metodo GetStream del NetworkStream.


Para enviar el mensaje:

Es lo mismo que en el Cliente...

Para recibir mensajes del Cliente:

-Se convierte el mensaje (que esta en Bytes) a String.
-Se almacena en un Textbox

Esto ha sido todo... y tngo 2 dudas, por ahora, son las siguientes:

-En el cliente, por que habria de convertir el mensaje de String a Bytes ?
-Cual es la funcionalidad del Thread ???


Espero sus opiniones.. quisiera saber si estoy entendiendo bien hasta alli.... algun concejo que me puedan dar las aceptare..... Espero sus Aportes ^^ !!!



CATBro

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


kub0x

En la Msdn tienes unas explicaciones sobre sockets en .Net
Tienes información disponible sobre los métodos y clases que debes de utilizar.
Échale un cuatacho. Un saludo
Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate


llAudioslavell

Cita de: CATBro en  6 Enero 2012, 07:50 AM
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




Gracias por la explicacion hermano ^^ ya entendi la razon del por que convertir el mensaje a bytes y tu otra explicacion me quedo un poco mas claro .....
Sobre los libros de TCP/IP con Sockets ... los buscare pero en VisualBasic.NET y les dare una leida para entender mas....  ahora que estoy buscando algo mas de informacion sobre los Sockets... no pense que fuese tan extenso x'D ... leere mas ^^ .. a y una duda... al hacer esta aplicacion no interesa el Sistema Operativo ??  digo por que el Server lo tengo en mi pc que tiene Win7 y los clientes tienen el WinXP como S.O. ...   otra duda mas ... Que me recomiendas para esta aplicacion .. usar VisualBasic.NET ? o C# ..  y por que ...!

Salu2 ^^ !!!

CATBro

Usar VB o C#???  ;D yo solo me dije un dia tengo ganas de aprender C# y pues los hice en C#, nunca me ha dado por aprender VB y pues no se cual te guste mas.Pero supuestamente C# es una mezcla de java,c++,vb etc..pero quien sepa igual que tu estoy aprendiendo progra.
Pues con el sistema operativo yo no eh tenido broncas, solo asegurate que este actualizado el equipo(que tenga el .NET framework ) y puedes correr tu programa escrito en C#. Eso eh entendido yo.  :huh:

Saludos

llAudioslavell

Cita de: CATBro en  6 Enero 2012, 19:40 PM
Usar VB o C#???  ;D yo solo me dije un dia tengo ganas de aprender C# y pues los hice en C#, nunca me ha dado por aprender VB y pues no se cual te guste mas.Pero supuestamente C# es una mezcla de java,c++,vb etc..pero quien sepa igual que tu estoy aprendiendo progra.
Pues con el sistema operativo yo no eh tenido broncas, solo asegurate que este actualizado el equipo(que tenga el .NET framework ) y puedes correr tu programa escrito en C#. Eso eh entendido yo.  :huh:

Saludos

Gracias por tu respuesta compañero ^^ !!  hare un nuevo post con las dudas que tengo