SlideShare una empresa de Scribd logo
1 de 7
Descargar para leer sin conexión
Mtro José Antonio Sandoval Acosta.
Docente de Ingeniería en Sistemas Computacionales.
México. 18 de marzo de 2017.
Ejemplo de aplicación Cliente-Servidor
 La aplicación cliente consiste en un una GUI (capa de presentación), en esta se captura la
tabla “Region” de la BD “Northwind” de SQL Server.
La Tabla Region consiste en únicamente dos campos:
 RegionID: Campo numérico entero
 RegionDescription: Como campo string.
 Las funcionalidades del GUI cliente consisten en Agregar, Eliminar, Actualizar y Consultar la
información de la tabla Region a través del servidor.
 La aplicación servidor (capa de negocio) recibe una cadena de texto que contiene un
“layout” que viene separados por punto y coma “;” y contiene primero el tipo de operación,
después el valor de RegionID, y finalmente el valor de RegionDescription. Las operaciones
permitidas son CONSULTA, INSERT, DELETE, y UPDATE.
 El servidor descompone la cadena de texto y la envía a un arreglo desde el cual puede
obtener los valores de los campos de la tabla, y enviar la operación correspondiente al SQL
Server por medio de los controles de base de datos ya vistos en clase.
 Finalmente, el servidor envía un acuse de recibo al cliente o bien el resultado de la consulta
para ser desplegado.
 El Cliente despliega el mensaje del acuse de recibo o la consulta solicitada en su caso.
 El SQL Server (capa de datos) contiene una instancia a la que el servidor se conecta y realiza
las consultas y modificaciones en la BD.
 Solo el servidor tiene conectividad con SQL Server, el cliente no conoce la instancia ni tiene
capacidad para conectarse.
 Ambas aplicaciones tienen validaciones básicas por lo que si se usan para otras apps deben
ser validados.
GUI del Cliente Consola del Servidor
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.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.IO;
namespace ClienteGUI
{
public partial class Form1 : Form
{
TcpClient tcpclnt = new TcpClient();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//conectar();
} // fin onUpload
private void conectar()
{
try
{
TcpClient tcpclnt = new TcpClient();
// utilizar para este caso IP local ya que
// cliente y servidor corren en la misma PC
mensaje.Text = "Conectandose con el servidor...";
tcpclnt.Connect("127.0.0.1", 8001);
mensaje.Text = "";
}
catch (Exception er)
{
MessageBox.Show("Error al conectar con Servidor: " +
er.Message.ToString());
Application.Exit();
}
}// fin conectar()
private void enviar(string operacion)
{
string[] subcadena;
string acuse = "";
int n = 0;
if ((codigo.Text.ToString().Length <= 0) ||
(!int.TryParse(codigo.Text.ToString(), out n)))
{
MessageBox.Show("El código de la región no es válido",
"Error");
return;
}
TcpClient tcpclnt = new TcpClient();
Mtro José Antonio Sandoval Acosta.
Docente de Ingeniería en Sistemas Computacionales.
México. 18 de marzo de 2017.
try
{
// utilizar para este caso IP local ya que
// cliente y servidor corren en la misma PC
mensaje.Text = "Conectandose con el servidor...";
tcpclnt.Connect("127.0.0.1", 8001);
mensaje.Text = "";
// formar la cadena que se enviará al servidor, contiene:
// tipo de operacion: 3 caracteres
// codigo de la region: 5 caracteres
// descripción de la región: 40 caracteres
string cadena = operacion + ";" +
codigo.Text.ToString() + ";" +
descrip.Text.ToString() + ";";
Stream stm = tcpclnt.GetStream();
// convertir cadena a ascii para transmitirla
ASCIIEncoding asen = new ASCIIEncoding();
byte[] ba = asen.GetBytes(cadena);
mensaje.Text = "Transmitiendo informacion...";
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);
for (int i = 0; i < k; i++)
{
acuse = acuse + Convert.ToChar(bb[i]);
}
tcpclnt.Close();
mensaje.Text = "";
//determinar el tipo de accion del SQL
}
catch (Exception er)
{
MessageBox.Show("Error al conectar con Servidor: " +
er.Message.ToString());
Application.Exit();
}
subcadena = acuse.Split(';');
try
{
if (subcadena[0].ToString().ToUpper().Trim() == "CONSULTA")
{
if (subcadena[1].ToString().Trim() != "-1")
{
codigo.Text = subcadena[1].ToString().Trim();
descrip.Text = subcadena[2].ToString().Trim();
}
else
{
MessageBox.Show("Registro no encontrado");
codigo.Text = "";
descrip.Text = "";
}
}
else
{
int registros = Int32.Parse(subcadena[1].ToString().Trim());
Mtro José Antonio Sandoval Acosta.
Docente de Ingeniería en Sistemas Computacionales.
México. 18 de marzo de 2017.
if (registros >0)
{
// si regresa mayor de ceros corresponde
// al numero de registros que fueron afectados
mensaje.Text="Operación realizada: "+
subcadena[0].ToString().Trim();
}
else
if (registros==0)
{
// Si regresa cero quiere decir que
// ningun registro fue afectado
MessageBox.Show("Registro no Encontrado: ",
subcadena[0].ToString().Trim());
}
else
if (registros < 0)
{
// si regresa menor de cero quiere decir
// que hubo un errr y la operacion no se realizo
MessageBox.Show("La operación no pudo ser realizada: ",
subcadena[0].ToString().Trim());
}
}
}
catch (Exception er)
{
MessageBox.Show("Error al conectar con Servidor: " +
er.Message.ToString());
}
}// fin enviar()
private void consultar_Click(object sender, EventArgs e)
{
enviar("CONSULTA");
}
private void salir_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void insertar_Click(object sender, EventArgs e)
{
enviar("INSERT");
}
private void eliminar_Click(object sender, EventArgs e)
{
enviar("DELETE");
}
private void modificar_Click(object sender, EventArgs e)
{
enviar("UPDATE");
}
} // fin clase
} // fin namespace
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;
using System.Data;
namespace SvrP
{
class Servidor
{
static string acuse = "";
static Socket s;
static IPAddress ipAd;
static TcpListener myList;
static ASCIIEncoding asen;
static string operacion = "";
static string cadSQL = "";
static string[] subcadena;
static string conectSQL = @"Server=.sqlexp; database=Northwnd; " +
"Integrated Security=TRUE";
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
{
// asignar IP local a la app server
ipAd = IPAddress.Any;
// Utilizamos la dirección local e igual en el cliente
// Inicializar Listener
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...");
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[500];
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);
//determinar el tipo de accion del SQL
Mtro José Antonio Sandoval Acosta.
Docente de Ingeniería en Sistemas Computacionales.
México. 18 de marzo de 2017.
subcadena = cadena.Split(';');
operacion = subcadena[0].ToString().ToUpper().Trim();
}
catch (Exception e)
{
acuse = operacion.ToUpper().Trim() + ";-1;" +
e.StackTrace + ";";
enviarAcuse(acuse);
return;
}
try
{
if (operacion == "CONSULTA")
{
string consulta="Select * from [NORTHWND].[dbo].[Region] "+
" where regionID=" + subcadena[1].ToString().Trim();
// Conectarse con el SQL Server
SqlConnection conectar = new SqlConnection(conectSQL);
conectar.Open();
SqlDataAdapter adaptador = new SqlDataAdapter();
adaptador.SelectCommand = new SqlCommand(
consulta, conectar);
DataSet ds = new DataSet();
adaptador.Fill(ds);
conectar.Close();
if (ds.Tables[0].Rows.Count > 0)
{
for (int i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
{
acuse = "CONSULTA;" +
ds.Tables[0].Rows[i].ItemArray[0].ToString()+"; "+
ds.Tables[0].Rows[i].ItemArray[1].ToString()+"; ";
}
}
else
{
// un registro negativo indica al cliente
// que no se encontró la información
acuse = "CONSULTA;-1;;";
}
}
else
{
SqlConnection cm = new SqlConnection();
cm.ConnectionString = conectSQL;
cm.Open();
if (operacion == "DELETE")
{
cadSQL = "delete [NORTHWND].[dbo].[Region] " +
" where regionID=" +
subcadena[1].ToString().Trim();
}
else
if (operacion == "INSERT")
{
cadSQL="insert into [NORTHWND].[dbo].[Region] values(" +
subcadena[1].ToString().Trim() +
Mtro José Antonio Sandoval Acosta.
Docente de Ingeniería en Sistemas Computacionales.
México. 18 de marzo de 2017.
", '" + subcadena[2].ToString().Trim() +
"')";
}
else
if (operacion == "UPDATE")
{
cadSQL = "update [NORTHWND].[dbo].[Region] set " +
"regionDescription='" +
subcadena[2].ToString().Trim() +
"' where regionID=" +
subcadena[1].ToString().Trim();
}
SqlCommand cmd = new SqlCommand(cadSQL, cm);
// regresa numero de registros afectados
int x = cmd.ExecuteNonQuery();
cm.Close();
acuse = operacion + ";"+x.ToString()+";;";
Console.WriteLine(operacion+
"; Registros afectados: "+x.ToString());
}
// Ejecutar la cadena como comando del SQL
// solo aplica para Insert, Delet y UPdate
Console.WriteLine(cadSQL);
// Enviar señal exitosa al Cliente
// Esta señal puede variar dependiendo del proceso ejecutado
asen = new ASCIIEncoding();
s.Send(asen.GetBytes(acuse));
Console.WriteLine(acuse + "nAcuse enviado");
s.Close();
myList.Stop();
}
catch (Exception e)
{
acuse = operacion + ";-1;" + "nError... " +
e.StackTrace + ";";
enviarAcuse(acuse);
return;
}
} // fin ciclo
} // fin main
private static void enviarAcuse(string acuse)
{
asen = new ASCIIEncoding();
ipAd = IPAddress.Any;
myList = new TcpListener(ipAd, 8001);
myList.Start();
s = myList.AcceptSocket();
s.Send(asen.GetBytes(acuse));
s.Close();
myList.Stop();
Console.WriteLine(acuse);
return;
}// fin metodo enviarAcuse
} // fin clase
} // fin namespace

Más contenido relacionado

La actualidad más candente

ASP.NET Web API
ASP.NET Web APIASP.NET Web API
ASP.NET Web APIhabib_786
 
Form Processing In Php
Form Processing In PhpForm Processing In Php
Form Processing In PhpHarit Kothari
 
Jsp/Servlet
Jsp/ServletJsp/Servlet
Jsp/ServletSunil OS
 
9. ES6 | Let And Const | TypeScript | JavaScript
9. ES6 | Let And Const | TypeScript | JavaScript9. ES6 | Let And Const | TypeScript | JavaScript
9. ES6 | Let And Const | TypeScript | JavaScriptpcnmtutorials
 
Introduction to Javascript
Introduction to JavascriptIntroduction to Javascript
Introduction to JavascriptAmit Tyagi
 
RESTful API Design Best Practices Using ASP.NET Web API
RESTful API Design Best Practices Using ASP.NET Web APIRESTful API Design Best Practices Using ASP.NET Web API
RESTful API Design Best Practices Using ASP.NET Web API💻 Spencer Schneidenbach
 
1 03 - CSS Introduction
1 03 - CSS Introduction1 03 - CSS Introduction
1 03 - CSS Introductionapnwebdev
 
Form Handling using PHP
Form Handling using PHPForm Handling using PHP
Form Handling using PHPNisa Soomro
 
Basic of HTML, CSS(StyleSheet), JavaScript(js), Bootstrap, JSON & AngularJS
Basic of HTML, CSS(StyleSheet), JavaScript(js), Bootstrap, JSON & AngularJSBasic of HTML, CSS(StyleSheet), JavaScript(js), Bootstrap, JSON & AngularJS
Basic of HTML, CSS(StyleSheet), JavaScript(js), Bootstrap, JSON & AngularJSDeepak Upadhyay
 
Java Basics
Java BasicsJava Basics
Java BasicsSunil OS
 
Intro to web services
Intro to web servicesIntro to web services
Intro to web servicesNeil Ghosh
 

La actualidad más candente (20)

ASP.NET Web API
ASP.NET Web APIASP.NET Web API
ASP.NET Web API
 
jQuery
jQueryjQuery
jQuery
 
Servlet Filters
Servlet FiltersServlet Filters
Servlet Filters
 
Form Processing In Php
Form Processing In PhpForm Processing In Php
Form Processing In Php
 
Jsp/Servlet
Jsp/ServletJsp/Servlet
Jsp/Servlet
 
Oledbconnection (clase)
Oledbconnection (clase)Oledbconnection (clase)
Oledbconnection (clase)
 
9. ES6 | Let And Const | TypeScript | JavaScript
9. ES6 | Let And Const | TypeScript | JavaScript9. ES6 | Let And Const | TypeScript | JavaScript
9. ES6 | Let And Const | TypeScript | JavaScript
 
Introduction to Javascript
Introduction to JavascriptIntroduction to Javascript
Introduction to Javascript
 
RESTful API Design Best Practices Using ASP.NET Web API
RESTful API Design Best Practices Using ASP.NET Web APIRESTful API Design Best Practices Using ASP.NET Web API
RESTful API Design Best Practices Using ASP.NET Web API
 
1 03 - CSS Introduction
1 03 - CSS Introduction1 03 - CSS Introduction
1 03 - CSS Introduction
 
Form Handling using PHP
Form Handling using PHPForm Handling using PHP
Form Handling using PHP
 
JAVA OOP
JAVA OOPJAVA OOP
JAVA OOP
 
jQuery
jQueryjQuery
jQuery
 
Basic of HTML, CSS(StyleSheet), JavaScript(js), Bootstrap, JSON & AngularJS
Basic of HTML, CSS(StyleSheet), JavaScript(js), Bootstrap, JSON & AngularJSBasic of HTML, CSS(StyleSheet), JavaScript(js), Bootstrap, JSON & AngularJS
Basic of HTML, CSS(StyleSheet), JavaScript(js), Bootstrap, JSON & AngularJS
 
HTML5
HTML5HTML5
HTML5
 
CSS Dasar #1 : Intro
CSS Dasar #1 : IntroCSS Dasar #1 : Intro
CSS Dasar #1 : Intro
 
Java script cookies
Java script   cookiesJava script   cookies
Java script cookies
 
Java Basics
Java BasicsJava Basics
Java Basics
 
Intro to web services
Intro to web servicesIntro to web services
Intro to web services
 
CSS Introduction
CSS IntroductionCSS Introduction
CSS Introduction
 

Destacado

Generaciones de la computacion
Generaciones de la computacionGeneraciones de la computacion
Generaciones de la computacionmartha sedano
 
Presentacion Corrientes del Pensamiento Maria Bolivar
Presentacion Corrientes del Pensamiento Maria BolivarPresentacion Corrientes del Pensamiento Maria Bolivar
Presentacion Corrientes del Pensamiento Maria Bolivarmaria bolivar
 
Internet based distance education
Internet based distance educationInternet based distance education
Internet based distance educationcw8842
 
Kssr华语看图写话
Kssr华语看图写话Kssr华语看图写话
Kssr华语看图写话Sibu, Sarawak
 
Kssr华语看图写话答案
Kssr华语看图写话答案Kssr华语看图写话答案
Kssr华语看图写话答案Sibu, Sarawak
 
Rehabilitacion de Desgarro del Recto Femoral
Rehabilitacion de Desgarro del Recto FemoralRehabilitacion de Desgarro del Recto Femoral
Rehabilitacion de Desgarro del Recto FemoralPablo Vollmar
 
Trabajo impresiones 3d
Trabajo impresiones 3dTrabajo impresiones 3d
Trabajo impresiones 3dagusjosafat
 
3Com 1789
3Com 17893Com 1789
3Com 1789savomir
 
3Com 80-000643-12
3Com 80-000643-123Com 80-000643-12
3Com 80-000643-12savomir
 
オープンソースカンファレンスではないOSCの話
オープンソースカンファレンスではないOSCの話オープンソースカンファレンスではないOSCの話
オープンソースカンファレンスではないOSCの話Kenichi Kinoshita
 
Blame 037
Blame 037Blame 037
Blame 037comicgo
 
Como funciona o marketing de relacionamento no sector não lucrativo
Como funciona o marketing de relacionamento no sector não lucrativoComo funciona o marketing de relacionamento no sector não lucrativo
Como funciona o marketing de relacionamento no sector não lucrativoCésar Ferreira
 
UPSJB Realidad nacional
UPSJB Realidad nacional UPSJB Realidad nacional
UPSJB Realidad nacional Edward leyva
 
3Com 3C905-TX-6
3Com 3C905-TX-63Com 3C905-TX-6
3Com 3C905-TX-6savomir
 
Palestra 1 sobre o pau- brasil - Projeto Poupança Verde
Palestra 1 sobre o  pau- brasil  - Projeto Poupança VerdePalestra 1 sobre o  pau- brasil  - Projeto Poupança Verde
Palestra 1 sobre o pau- brasil - Projeto Poupança VerdeValter Almeida
 

Destacado (20)

Generaciones de la computacion
Generaciones de la computacionGeneraciones de la computacion
Generaciones de la computacion
 
Presentacion Corrientes del Pensamiento Maria Bolivar
Presentacion Corrientes del Pensamiento Maria BolivarPresentacion Corrientes del Pensamiento Maria Bolivar
Presentacion Corrientes del Pensamiento Maria Bolivar
 
Internet based distance education
Internet based distance educationInternet based distance education
Internet based distance education
 
About Petra Place Counseling Services
About Petra Place Counseling ServicesAbout Petra Place Counseling Services
About Petra Place Counseling Services
 
Kssr华语看图写话
Kssr华语看图写话Kssr华语看图写话
Kssr华语看图写话
 
Imp. Área de venta Coca Cola - Guayaquil
Imp. Área de venta Coca Cola - GuayaquilImp. Área de venta Coca Cola - Guayaquil
Imp. Área de venta Coca Cola - Guayaquil
 
Kssr华语看图写话答案
Kssr华语看图写话答案Kssr华语看图写话答案
Kssr华语看图写话答案
 
Rehabilitacion de Desgarro del Recto Femoral
Rehabilitacion de Desgarro del Recto FemoralRehabilitacion de Desgarro del Recto Femoral
Rehabilitacion de Desgarro del Recto Femoral
 
Contabilidad daniela
Contabilidad danielaContabilidad daniela
Contabilidad daniela
 
Presentacion
PresentacionPresentacion
Presentacion
 
Trabajo impresiones 3d
Trabajo impresiones 3dTrabajo impresiones 3d
Trabajo impresiones 3d
 
3Com 1789
3Com 17893Com 1789
3Com 1789
 
3Com 80-000643-12
3Com 80-000643-123Com 80-000643-12
3Com 80-000643-12
 
オープンソースカンファレンスではないOSCの話
オープンソースカンファレンスではないOSCの話オープンソースカンファレンスではないOSCの話
オープンソースカンファレンスではないOSCの話
 
Blame 037
Blame 037Blame 037
Blame 037
 
Como funciona o marketing de relacionamento no sector não lucrativo
Como funciona o marketing de relacionamento no sector não lucrativoComo funciona o marketing de relacionamento no sector não lucrativo
Como funciona o marketing de relacionamento no sector não lucrativo
 
UPSJB Realidad nacional
UPSJB Realidad nacional UPSJB Realidad nacional
UPSJB Realidad nacional
 
3Com 3C905-TX-6
3Com 3C905-TX-63Com 3C905-TX-6
3Com 3C905-TX-6
 
Palestra 1 sobre o pau- brasil - Projeto Poupança Verde
Palestra 1 sobre o  pau- brasil  - Projeto Poupança VerdePalestra 1 sobre o  pau- brasil  - Projeto Poupança Verde
Palestra 1 sobre o pau- brasil - Projeto Poupança Verde
 
La innovación del teléfono móvil
La innovación del teléfono móvilLa innovación del teléfono móvil
La innovación del teléfono móvil
 

Similar a Aplicación Cliente - Servidor / GUI - Consola

Avance proyecto integrador i
Avance proyecto integrador iAvance proyecto integrador i
Avance proyecto integrador iSantiago Forland
 
Entrenamiento en Acceso a Datos con ASP.NET
Entrenamiento en Acceso a Datos con ASP.NETEntrenamiento en Acceso a Datos con ASP.NET
Entrenamiento en Acceso a Datos con ASP.NETHaaron Gonzalez
 
Bases de Datos en Java - Intro a JDBC
Bases de Datos en Java - Intro a JDBCBases de Datos en Java - Intro a JDBC
Bases de Datos en Java - Intro a JDBCCarlos Hernando
 
Clase conexion java - Analisis de Sistemas
Clase conexion java - Analisis de SistemasClase conexion java - Analisis de Sistemas
Clase conexion java - Analisis de SistemasJose Bustamante Romero
 
Conexion sql server 2005 java netbeans
Conexion sql server 2005 java netbeansConexion sql server 2005 java netbeans
Conexion sql server 2005 java netbeansjbersosa
 
CSA - Web Parts en SharePoint 2010
CSA - Web Parts en SharePoint 2010CSA - Web Parts en SharePoint 2010
CSA - Web Parts en SharePoint 2010Comunidad SharePoint
 
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datosTópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datosJosé Antonio Sandoval Acosta
 
Precentacion de sql visual
Precentacion de sql visualPrecentacion de sql visual
Precentacion de sql visualBryanChacon12
 
Novedades en BCS en SharePoint 2013
Novedades en BCS en SharePoint 2013Novedades en BCS en SharePoint 2013
Novedades en BCS en SharePoint 2013Juan Carlos Gonzalez
 
Lpiii tema5 - jdbc
Lpiii tema5 - jdbcLpiii tema5 - jdbc
Lpiii tema5 - jdbckjrojas
 

Similar a Aplicación Cliente - Servidor / GUI - Consola (20)

Manual tecnico
Manual tecnicoManual tecnico
Manual tecnico
 
Ejemplo de aplicación cliente-servidor en C#
Ejemplo de aplicación cliente-servidor  en C#Ejemplo de aplicación cliente-servidor  en C#
Ejemplo de aplicación cliente-servidor en C#
 
Avance proyecto integrador i
Avance proyecto integrador iAvance proyecto integrador i
Avance proyecto integrador i
 
Entrenamiento en Acceso a Datos con ASP.NET
Entrenamiento en Acceso a Datos con ASP.NETEntrenamiento en Acceso a Datos con ASP.NET
Entrenamiento en Acceso a Datos con ASP.NET
 
Bases de Datos en Java - Intro a JDBC
Bases de Datos en Java - Intro a JDBCBases de Datos en Java - Intro a JDBC
Bases de Datos en Java - Intro a JDBC
 
Servicios web
Servicios webServicios web
Servicios web
 
Connection Java
Connection JavaConnection Java
Connection Java
 
Clase conexion java - Analisis de Sistemas
Clase conexion java - Analisis de SistemasClase conexion java - Analisis de Sistemas
Clase conexion java - Analisis de Sistemas
 
Conexion sql server 2005 java netbeans
Conexion sql server 2005 java netbeansConexion sql server 2005 java netbeans
Conexion sql server 2005 java netbeans
 
Clase
ClaseClase
Clase
 
Conexión a sql server con c#
Conexión a sql server con c#Conexión a sql server con c#
Conexión a sql server con c#
 
Ejemplo Base de Datos SQLite (Android)
Ejemplo Base de Datos SQLite (Android)Ejemplo Base de Datos SQLite (Android)
Ejemplo Base de Datos SQLite (Android)
 
Guia no2 ado.net
Guia no2 ado.netGuia no2 ado.net
Guia no2 ado.net
 
CSA - Web Parts en SharePoint 2010
CSA - Web Parts en SharePoint 2010CSA - Web Parts en SharePoint 2010
CSA - Web Parts en SharePoint 2010
 
Secure txscalacsharp
Secure txscalacsharpSecure txscalacsharp
Secure txscalacsharp
 
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datosTópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
 
Precentacion de sql visual
Precentacion de sql visualPrecentacion de sql visual
Precentacion de sql visual
 
Textos sqli_mssql
 Textos sqli_mssql Textos sqli_mssql
Textos sqli_mssql
 
Novedades en BCS en SharePoint 2013
Novedades en BCS en SharePoint 2013Novedades en BCS en SharePoint 2013
Novedades en BCS en SharePoint 2013
 
Lpiii tema5 - jdbc
Lpiii tema5 - jdbcLpiii tema5 - jdbc
Lpiii tema5 - jdbc
 

Más de José Antonio Sandoval Acosta

Ing. Mecatronica Prog. Básica U4 Arreglos y estructuras
Ing. Mecatronica Prog. Básica U4 Arreglos y estructurasIng. Mecatronica Prog. Básica U4 Arreglos y estructuras
Ing. Mecatronica Prog. Básica U4 Arreglos y estructurasJosé Antonio Sandoval Acosta
 
Ing. Mecatrónica, Prog. Básica U3 control de flujo
Ing. Mecatrónica, Prog. Básica U3 control de flujoIng. Mecatrónica, Prog. Básica U3 control de flujo
Ing. Mecatrónica, Prog. Básica U3 control de flujoJosé Antonio Sandoval Acosta
 
Ing. Mecatrónica, Prog. Básica, U2 intro a la programacion
Ing. Mecatrónica, Prog. Básica, U2 intro a la programacionIng. Mecatrónica, Prog. Básica, U2 intro a la programacion
Ing. Mecatrónica, Prog. Básica, U2 intro a la programacionJosé Antonio Sandoval Acosta
 
Ing. Mecatrónica, Prog. Básica U1; Conceptos basicos y algoritmos
Ing. Mecatrónica, Prog. Básica U1; Conceptos basicos y algoritmosIng. Mecatrónica, Prog. Básica U1; Conceptos basicos y algoritmos
Ing. Mecatrónica, Prog. Básica U1; Conceptos basicos y algoritmosJosé Antonio Sandoval Acosta
 

Más de José Antonio Sandoval Acosta (20)

Linea del tiempo de la inteligencia artificial.pptx
Linea del tiempo de la inteligencia artificial.pptxLinea del tiempo de la inteligencia artificial.pptx
Linea del tiempo de la inteligencia artificial.pptx
 
UNIDAD 2 CLASIFICACION DE LOS MATERIALES.pptx
UNIDAD 2 CLASIFICACION DE LOS  MATERIALES.pptxUNIDAD 2 CLASIFICACION DE LOS  MATERIALES.pptx
UNIDAD 2 CLASIFICACION DE LOS MATERIALES.pptx
 
croquis de aulas UAIM topolobampo FEB 2024
croquis de aulas UAIM topolobampo  FEB 2024croquis de aulas UAIM topolobampo  FEB 2024
croquis de aulas UAIM topolobampo FEB 2024
 
Ing. Mecatronica Prog. Básica, U5 Módulos
Ing. Mecatronica Prog. Básica, U5 MódulosIng. Mecatronica Prog. Básica, U5 Módulos
Ing. Mecatronica Prog. Básica, U5 Módulos
 
Ing. Mecatronica Prog. Básica U4 Arreglos y estructuras
Ing. Mecatronica Prog. Básica U4 Arreglos y estructurasIng. Mecatronica Prog. Básica U4 Arreglos y estructuras
Ing. Mecatronica Prog. Básica U4 Arreglos y estructuras
 
Ing. Mecatrónica, Prog. Básica U3 control de flujo
Ing. Mecatrónica, Prog. Básica U3 control de flujoIng. Mecatrónica, Prog. Básica U3 control de flujo
Ing. Mecatrónica, Prog. Básica U3 control de flujo
 
Ing. Mecatrónica, Prog. Básica, U2 intro a la programacion
Ing. Mecatrónica, Prog. Básica, U2 intro a la programacionIng. Mecatrónica, Prog. Básica, U2 intro a la programacion
Ing. Mecatrónica, Prog. Básica, U2 intro a la programacion
 
Ing. Mecatrónica, Prog. Básica U1; Conceptos basicos y algoritmos
Ing. Mecatrónica, Prog. Básica U1; Conceptos basicos y algoritmosIng. Mecatrónica, Prog. Básica U1; Conceptos basicos y algoritmos
Ing. Mecatrónica, Prog. Básica U1; Conceptos basicos y algoritmos
 
Manual de prácticas y antología para POO
Manual de prácticas y antología para  POOManual de prácticas y antología para  POO
Manual de prácticas y antología para POO
 
Aplicaciones móviles intro.
Aplicaciones móviles intro.Aplicaciones móviles intro.
Aplicaciones móviles intro.
 
Economia
EconomiaEconomia
Economia
 
ISCA-quimica-Equipo 2.pptx
ISCA-quimica-Equipo 2.pptxISCA-quimica-Equipo 2.pptx
ISCA-quimica-Equipo 2.pptx
 
Plantilla presentación.pptx
Plantilla presentación.pptxPlantilla presentación.pptx
Plantilla presentación.pptx
 
kitchenham.pptx
kitchenham.pptxkitchenham.pptx
kitchenham.pptx
 
Diagrama de Casos de Uso UML
Diagrama de Casos de Uso UMLDiagrama de Casos de Uso UML
Diagrama de Casos de Uso UML
 
Introducción al Diagrama de Clases UML
Introducción al Diagrama de Clases UMLIntroducción al Diagrama de Clases UML
Introducción al Diagrama de Clases UML
 
Diagrama de clases UML
Diagrama de clases UMLDiagrama de clases UML
Diagrama de clases UML
 
Diagrama UML Casos de Uso
Diagrama UML Casos de UsoDiagrama UML Casos de Uso
Diagrama UML Casos de Uso
 
Tema 3 - Comandos básicos.pdf
Tema 3 - Comandos básicos.pdfTema 3 - Comandos básicos.pdf
Tema 3 - Comandos básicos.pdf
 
Tema 1 - Intro.pdf
Tema 1 - Intro.pdfTema 1 - Intro.pdf
Tema 1 - Intro.pdf
 

Último

Diapositiva de Topografía Nivelación simple y compuesta
Diapositiva de Topografía Nivelación simple y compuestaDiapositiva de Topografía Nivelación simple y compuesta
Diapositiva de Topografía Nivelación simple y compuestajeffsalazarpuente
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaXimenaFallaLecca1
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxEduardoSnchezHernnde5
 
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaProyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaXjoseantonio01jossed
 
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdfAnthonyTiclia
 
estadisticasII Metodo-de-la-gran-M.pdf
estadisticasII   Metodo-de-la-gran-M.pdfestadisticasII   Metodo-de-la-gran-M.pdf
estadisticasII Metodo-de-la-gran-M.pdfFlorenciopeaortiz
 
Topografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasTopografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasSegundo Silva Maguiña
 
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...SuannNeyraChongShing
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdffredyflores58
 
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdfCAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdfReneBellido1
 
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdf
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdfPresentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdf
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdfMIGUELANGELCONDORIMA4
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfMikkaelNicolae
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.ALEJANDROLEONGALICIA
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxClaudiaPerez86192
 
Residente de obra y sus funciones que realiza .pdf
Residente de obra y sus funciones que realiza  .pdfResidente de obra y sus funciones que realiza  .pdf
Residente de obra y sus funciones que realiza .pdfevin1703e
 
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfPresentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfMirthaFernandez12
 
Caldera Recuperadora de químicos en celulosa tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa  tipos y funcionamientoCaldera Recuperadora de químicos en celulosa  tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa tipos y funcionamientoRobertoAlejandroCast6
 
Calavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfCalavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfyoseka196
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAJAMESDIAZ55
 
Introducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptIntroducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptEduardoCorado
 

Último (20)

Diapositiva de Topografía Nivelación simple y compuesta
Diapositiva de Topografía Nivelación simple y compuestaDiapositiva de Topografía Nivelación simple y compuesta
Diapositiva de Topografía Nivelación simple y compuesta
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptx
 
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaProyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
 
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
 
estadisticasII Metodo-de-la-gran-M.pdf
estadisticasII   Metodo-de-la-gran-M.pdfestadisticasII   Metodo-de-la-gran-M.pdf
estadisticasII Metodo-de-la-gran-M.pdf
 
Topografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasTopografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la Ingenierías
 
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
 
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdfCAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
 
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdf
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdfPresentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdf
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdf
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptx
 
Residente de obra y sus funciones que realiza .pdf
Residente de obra y sus funciones que realiza  .pdfResidente de obra y sus funciones que realiza  .pdf
Residente de obra y sus funciones que realiza .pdf
 
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfPresentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
 
Caldera Recuperadora de químicos en celulosa tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa  tipos y funcionamientoCaldera Recuperadora de químicos en celulosa  tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa tipos y funcionamiento
 
Calavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfCalavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdf
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
 
Introducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptIntroducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.ppt
 

Aplicación Cliente - Servidor / GUI - Consola

  • 1. Mtro José Antonio Sandoval Acosta. Docente de Ingeniería en Sistemas Computacionales. México. 18 de marzo de 2017. Ejemplo de aplicación Cliente-Servidor  La aplicación cliente consiste en un una GUI (capa de presentación), en esta se captura la tabla “Region” de la BD “Northwind” de SQL Server. La Tabla Region consiste en únicamente dos campos:  RegionID: Campo numérico entero  RegionDescription: Como campo string.  Las funcionalidades del GUI cliente consisten en Agregar, Eliminar, Actualizar y Consultar la información de la tabla Region a través del servidor.  La aplicación servidor (capa de negocio) recibe una cadena de texto que contiene un “layout” que viene separados por punto y coma “;” y contiene primero el tipo de operación, después el valor de RegionID, y finalmente el valor de RegionDescription. Las operaciones permitidas son CONSULTA, INSERT, DELETE, y UPDATE.  El servidor descompone la cadena de texto y la envía a un arreglo desde el cual puede obtener los valores de los campos de la tabla, y enviar la operación correspondiente al SQL Server por medio de los controles de base de datos ya vistos en clase.  Finalmente, el servidor envía un acuse de recibo al cliente o bien el resultado de la consulta para ser desplegado.  El Cliente despliega el mensaje del acuse de recibo o la consulta solicitada en su caso.  El SQL Server (capa de datos) contiene una instancia a la que el servidor se conecta y realiza las consultas y modificaciones en la BD.  Solo el servidor tiene conectividad con SQL Server, el cliente no conoce la instancia ni tiene capacidad para conectarse.  Ambas aplicaciones tienen validaciones básicas por lo que si se usan para otras apps deben ser validados. GUI del Cliente Consola del Servidor
  • 2. 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.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Net; using System.Net.Sockets; using System.IO; namespace ClienteGUI { public partial class Form1 : Form { TcpClient tcpclnt = new TcpClient(); public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { //conectar(); } // fin onUpload private void conectar() { try { TcpClient tcpclnt = new TcpClient(); // utilizar para este caso IP local ya que // cliente y servidor corren en la misma PC mensaje.Text = "Conectandose con el servidor..."; tcpclnt.Connect("127.0.0.1", 8001); mensaje.Text = ""; } catch (Exception er) { MessageBox.Show("Error al conectar con Servidor: " + er.Message.ToString()); Application.Exit(); } }// fin conectar() private void enviar(string operacion) { string[] subcadena; string acuse = ""; int n = 0; if ((codigo.Text.ToString().Length <= 0) || (!int.TryParse(codigo.Text.ToString(), out n))) { MessageBox.Show("El código de la región no es válido", "Error"); return; } TcpClient tcpclnt = new TcpClient();
  • 3. Mtro José Antonio Sandoval Acosta. Docente de Ingeniería en Sistemas Computacionales. México. 18 de marzo de 2017. try { // utilizar para este caso IP local ya que // cliente y servidor corren en la misma PC mensaje.Text = "Conectandose con el servidor..."; tcpclnt.Connect("127.0.0.1", 8001); mensaje.Text = ""; // formar la cadena que se enviará al servidor, contiene: // tipo de operacion: 3 caracteres // codigo de la region: 5 caracteres // descripción de la región: 40 caracteres string cadena = operacion + ";" + codigo.Text.ToString() + ";" + descrip.Text.ToString() + ";"; Stream stm = tcpclnt.GetStream(); // convertir cadena a ascii para transmitirla ASCIIEncoding asen = new ASCIIEncoding(); byte[] ba = asen.GetBytes(cadena); mensaje.Text = "Transmitiendo informacion..."; 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); for (int i = 0; i < k; i++) { acuse = acuse + Convert.ToChar(bb[i]); } tcpclnt.Close(); mensaje.Text = ""; //determinar el tipo de accion del SQL } catch (Exception er) { MessageBox.Show("Error al conectar con Servidor: " + er.Message.ToString()); Application.Exit(); } subcadena = acuse.Split(';'); try { if (subcadena[0].ToString().ToUpper().Trim() == "CONSULTA") { if (subcadena[1].ToString().Trim() != "-1") { codigo.Text = subcadena[1].ToString().Trim(); descrip.Text = subcadena[2].ToString().Trim(); } else { MessageBox.Show("Registro no encontrado"); codigo.Text = ""; descrip.Text = ""; } } else { int registros = Int32.Parse(subcadena[1].ToString().Trim());
  • 4. Mtro José Antonio Sandoval Acosta. Docente de Ingeniería en Sistemas Computacionales. México. 18 de marzo de 2017. if (registros >0) { // si regresa mayor de ceros corresponde // al numero de registros que fueron afectados mensaje.Text="Operación realizada: "+ subcadena[0].ToString().Trim(); } else if (registros==0) { // Si regresa cero quiere decir que // ningun registro fue afectado MessageBox.Show("Registro no Encontrado: ", subcadena[0].ToString().Trim()); } else if (registros < 0) { // si regresa menor de cero quiere decir // que hubo un errr y la operacion no se realizo MessageBox.Show("La operación no pudo ser realizada: ", subcadena[0].ToString().Trim()); } } } catch (Exception er) { MessageBox.Show("Error al conectar con Servidor: " + er.Message.ToString()); } }// fin enviar() private void consultar_Click(object sender, EventArgs e) { enviar("CONSULTA"); } private void salir_Click(object sender, EventArgs e) { Application.Exit(); } private void insertar_Click(object sender, EventArgs e) { enviar("INSERT"); } private void eliminar_Click(object sender, EventArgs e) { enviar("DELETE"); } private void modificar_Click(object sender, EventArgs e) { enviar("UPDATE"); } } // fin clase } // fin namespace
  • 5. 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; using System.Data; namespace SvrP { class Servidor { static string acuse = ""; static Socket s; static IPAddress ipAd; static TcpListener myList; static ASCIIEncoding asen; static string operacion = ""; static string cadSQL = ""; static string[] subcadena; static string conectSQL = @"Server=.sqlexp; database=Northwnd; " + "Integrated Security=TRUE"; 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 { // asignar IP local a la app server ipAd = IPAddress.Any; // Utilizamos la dirección local e igual en el cliente // Inicializar Listener 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..."); 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[500]; 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); //determinar el tipo de accion del SQL
  • 6. Mtro José Antonio Sandoval Acosta. Docente de Ingeniería en Sistemas Computacionales. México. 18 de marzo de 2017. subcadena = cadena.Split(';'); operacion = subcadena[0].ToString().ToUpper().Trim(); } catch (Exception e) { acuse = operacion.ToUpper().Trim() + ";-1;" + e.StackTrace + ";"; enviarAcuse(acuse); return; } try { if (operacion == "CONSULTA") { string consulta="Select * from [NORTHWND].[dbo].[Region] "+ " where regionID=" + subcadena[1].ToString().Trim(); // Conectarse con el SQL Server SqlConnection conectar = new SqlConnection(conectSQL); conectar.Open(); SqlDataAdapter adaptador = new SqlDataAdapter(); adaptador.SelectCommand = new SqlCommand( consulta, conectar); DataSet ds = new DataSet(); adaptador.Fill(ds); conectar.Close(); if (ds.Tables[0].Rows.Count > 0) { for (int i = 0; i <= ds.Tables[0].Rows.Count - 1; i++) { acuse = "CONSULTA;" + ds.Tables[0].Rows[i].ItemArray[0].ToString()+"; "+ ds.Tables[0].Rows[i].ItemArray[1].ToString()+"; "; } } else { // un registro negativo indica al cliente // que no se encontró la información acuse = "CONSULTA;-1;;"; } } else { SqlConnection cm = new SqlConnection(); cm.ConnectionString = conectSQL; cm.Open(); if (operacion == "DELETE") { cadSQL = "delete [NORTHWND].[dbo].[Region] " + " where regionID=" + subcadena[1].ToString().Trim(); } else if (operacion == "INSERT") { cadSQL="insert into [NORTHWND].[dbo].[Region] values(" + subcadena[1].ToString().Trim() +
  • 7. Mtro José Antonio Sandoval Acosta. Docente de Ingeniería en Sistemas Computacionales. México. 18 de marzo de 2017. ", '" + subcadena[2].ToString().Trim() + "')"; } else if (operacion == "UPDATE") { cadSQL = "update [NORTHWND].[dbo].[Region] set " + "regionDescription='" + subcadena[2].ToString().Trim() + "' where regionID=" + subcadena[1].ToString().Trim(); } SqlCommand cmd = new SqlCommand(cadSQL, cm); // regresa numero de registros afectados int x = cmd.ExecuteNonQuery(); cm.Close(); acuse = operacion + ";"+x.ToString()+";;"; Console.WriteLine(operacion+ "; Registros afectados: "+x.ToString()); } // Ejecutar la cadena como comando del SQL // solo aplica para Insert, Delet y UPdate Console.WriteLine(cadSQL); // Enviar señal exitosa al Cliente // Esta señal puede variar dependiendo del proceso ejecutado asen = new ASCIIEncoding(); s.Send(asen.GetBytes(acuse)); Console.WriteLine(acuse + "nAcuse enviado"); s.Close(); myList.Stop(); } catch (Exception e) { acuse = operacion + ";-1;" + "nError... " + e.StackTrace + ";"; enviarAcuse(acuse); return; } } // fin ciclo } // fin main private static void enviarAcuse(string acuse) { asen = new ASCIIEncoding(); ipAd = IPAddress.Any; myList = new TcpListener(ipAd, 8001); myList.Start(); s = myList.AcceptSocket(); s.Send(asen.GetBytes(acuse)); s.Close(); myList.Stop(); Console.WriteLine(acuse); return; }// fin metodo enviarAcuse } // fin clase } // fin namespace