ejemplo de aplicación cliente-servidor en c#

6

Click here to load reader

Upload: jose-antonio-sandoval-acosta

Post on 12-Apr-2017

125 views

Category:

Engineering


5 download

TRANSCRIPT

Page 1: Ejemplo de aplicación cliente-servidor  en C#

Mtro José Antonio Sandoval Acosta. Docente de Ingeniería en Sistemas Computacionales. México. 18 de marzo de 2017.

Aplicación Cliente Servidor en 3 capas:

- Se tiene una aplicación cliente en consola (capa de presentación), esta sirve para

realizar la captura de la cadena que se pretende ejecutar en el SQL Server.

- La aplicación servidor es la capa de negocio o procesamiento, recibe la cadena

producida por el cliente y la ejecuta en el SQL Server por medio de los controles o

comandos apropiados, solo puede realizar Insert, Delet y Update ya que utiliza un

ExecuteNonQuery().

- El SQL Server o capa de datos en este caso sirve como repositorio de información y

por medio de queriers se puede corroborar que lo enviado desde el cliente se

ejecutó correctamente.

- Tanto el cliente como el servidor corren su proceso dentro de un ciclo, de esta forma

cuando se realiza una acción al finalizar la misma ambas aplicaciones vuelven a

estado de espera, y permanecerán así hasta que se realice otra acción o se cierren

las aplicaciones.

Page 2: Ejemplo de aplicación cliente-servidor  en C#

Mtro José Antonio Sandoval Acosta. Docente de Ingeniería en Sistemas Computacionales. México. 18 de marzo de 2017.

// Programa Servidor using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Net; using System.Net.Sockets; using System.Data.SqlClient; namespace SvrP { class Servidor { static void Main(string[] args) { Console.WriteLine("*** Server Application ***"); // Se ejecuta el Listener en un ciclo para que se repita // de forma indefinida y acepte tantas conexiones sean posibles while (true) { try { IPAddress ipAd = IPAddress.Any; // EN este caso utilizamos la dirección

// local e igual en el cliente // Inicializar Listener TcpListener myList = new TcpListener(ipAd,8001); myList.Start(); Console.WriteLine(

"Servidor corriendo en Puerto 8001..."); Console.WriteLine("Local End Point:" + myList.LocalEndpoint); Console.WriteLine("Esperando conexión..."); Socket s = myList.AcceptSocket(); Console.WriteLine("Conexión recivida desde: " + s.RemoteEndPoint); // Guardar en una variable la información

// recibida del cliente byte[] b = new byte[100]; int k = s.Receive(b); Console.WriteLine("Recievido..."); // Convierte e iprime el contenido de la cadena string cadena = ""; for (int i = 0; i < k; i++) { cadena = cadena + Convert.ToChar(b[i]); } Console.WriteLine(cadena); // Conectarse con el SQL Server string conectSQL = @"Server=.\sqlexp;database=Northwnd;"

+ " Integrated Security=TRUE"; SqlConnection cm = new SqlConnection(); cm.ConnectionString = conectSQL; cm.Open();

Page 3: Ejemplo de aplicación cliente-servidor  en C#

Mtro José Antonio Sandoval Acosta. Docente de Ingeniería en Sistemas Computacionales. México. 18 de marzo de 2017.

// Ejecutar la cadena como comando del SQL // solo aplica para Insert, Delet y

// UPdate ya que se usa ExecuteNonQuery SqlCommand cmd = new SqlCommand(cadena, cm); cmd.ExecuteNonQuery(); cm.Close(); // Enviar señal exitosa al Cliente // Esta señal puede variar dependiendo

//del proceso ejecutado ASCIIEncoding asen = new ASCIIEncoding(); s.Send(asen.GetBytes(

"Cadena recibida. Comando ejecutado")); Console.WriteLine("\nAcuse enviado"); s.Close(); myList.Stop(); } catch (Exception e) { Console.WriteLine("\nError... " + e.StackTrace); } } } } }

Page 4: Ejemplo de aplicación cliente-servidor  en C#

Mtro José Antonio Sandoval Acosta. Docente de Ingeniería en Sistemas Computacionales. México. 18 de marzo de 2017.

// Programa Cliente using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Net; using System.Net.Sockets; using System.IO; namespace CteP { class Cliente { static void Main(string[] args) { Console.WriteLine("Client Application"); while (true) { try { TcpClient tcpclnt = new TcpClient(); Console.WriteLine("Conectando....."); // utilizar para este caso IP local ya que // cliente y servidor corren en la misma PC tcpclnt.Connect("127.0.0.1", 8001); Console.WriteLine("*** Conectado con el servidor ***"); Console.Write("Introduzca frase a transmitir: "); String str = Console.ReadLine(); Stream stm = tcpclnt.GetStream(); // convertir cadena a ascii para transmitirla ASCIIEncoding asen = new ASCIIEncoding(); byte[] ba = asen.GetBytes(str); Console.WriteLine("Transmitiendo cadena..."); stm.Write(ba, 0, ba.Length); // recibir acuse, se debe converir a string byte[] bb = new byte[100]; int k = stm.Read(bb, 0, 100); string acuse = ""; for (int i = 0; i < k; i++) acuse = acuse + Convert.ToChar(bb[i]); Console.WriteLine(acuse); tcpclnt.Close(); } catch (Exception e) { Console.WriteLine("Error... " + e.StackTrace); } } } } }

Page 5: Ejemplo de aplicación cliente-servidor  en C#

Mtro José Antonio Sandoval Acosta. Docente de Ingeniería en Sistemas Computacionales. México. 18 de marzo de 2017.

Estado inicial del Cliente, el Servidor y el SQL Server con la tabla Region.

Page 6: Ejemplo de aplicación cliente-servidor  en C#

Mtro José Antonio Sandoval Acosta. Docente de Ingeniería en Sistemas Computacionales. México. 18 de marzo de 2017.

Estado final del Cliente, el Servidor y la instancia de SQL Server, tabla Region.