Práctica 1. Introducción a.net, aplicaciones básicas, namespaces, paquetes y código intermedio.

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Práctica 1. Introducción a.net, aplicaciones básicas, namespaces, paquetes y código intermedio."

Transcripción

1 Práctica 1. Introducción a.net, aplicaciones básicas, namespaces, paquetes y código intermedio. El objetivo de esta práctica es programar una aplicación sencilla para familiarizarnos con el entorno de programación de.net. Durante el desarrollo de las prácticas se van realizar prácticas para dispositivos limitados (PDA). Conociendo el Entorno de Desarrollo Comenzamos por crear un nuevo proyecto con Visual Studio 2005 o 2008: Una vez pulsemos, aparecerá en la pantalla los posibles proyectos. El número y tipo de proyectos dependerá de los SDKs instalados en el sistema: Vamos a crear un proyecto Visual C#, para dispositivo limitado (Smart Device), usando el SDK de Windows Mobile 5.0 o 6.0 dependiendo del que tengamos instalado. La plantilla del proyecto es Empty Project. Le damos un nombre, por ejemplo MiAplicacion o como uno desee. Seleccionamos la ubicación que más nos convenga.

2 Todos los proyectos que hagamos, se incorporan a una solución, daremos el nombre MiSolución o el que nos apetezca a la solución. Ten en cuenta que la solución es un conjunto de proyectos y el nombre debería representar algo común a todos los proyectos incluidos en él. Al crear el proyecto, podemos ver en el explorador de soluciones (Si no aparece, menú View[Ver]>Explorador de soluciones) que el proyecto está vacío completamente. Como podemos ver, la solución no contiene ningún fichero de código. Para introducir un nuevo fichero de código, que será el programa principal, sobre el proyecto MiAplicación, haremos click con el botón derecho y pulsaremos sobre añadir añadir elemento nuevo. Al hacer esto, aparecen varias posibilidades, entre las que se encuentra Archivo de código. Hay otras plantillas, como la de clase o interfaz, que generan parte del código, la estructura etc

3 Llamaremos a este fichero programa.cs. En él vamos a escribir el código de la primera aplicación para Windows Mobile. El fichero está vacío, dado que no se ha utilizado ninguna plantilla de clase o de interfaz. El programa principal Vamos a escribir el programa principal. Para ello se pueden utilizar las siguientes clausulas: public static int Main(), public static void Main(), public static void Main(string[] args) public static int Main(string[] args) Vamos a probar el siguiente código, que calcula el factorial de un número entero de 64 bits. public class MiAplicacion public static Int64 factorial(int64 num) if ((num == 1) (num == 0)) return 1; return num * factorial(num - 1); public static void Main(string[] args) MiAplicacion.factorial(2); factorial(6); Copiad este código en el fichero programa.cs. Para compilar, podeis hacer click con el botón derecho en el proyecto y pulsar en

4 generar o build. Si hacéis esto mismo con la solución, compilará todos los proyectos contenidos en la solución. En la ventana de resultados (si no se ve la pestaña, pulsad en el menú Ver Resultados) podréis ver si la compilación ha sido correcta o no. Si vamos a la carpeta donde hemos guardado el proyecto, en la ruta MiSolucion\MiAplicacion\Bin\Debug podemos ver dos ficheros, MiAplicación.exe y MiAplicación.pdb. Estos ficheros tienen información de depuración, pueden ser un poco más lentos que los programas sin información de depuración. Si cambiáramos la configuración a Release (sin debug) crearía un fichero más eficiente, pero en el caso que nos ocupa, vamos a aprender, así que dejamos el sistema en modo debug. Depurar el programa A continuación veremos cómo se depura un programa con Visual Studio. Para depurar, podemos poner puntos de interrupción pulsando en la parte gris del editor de texto, justo en la línea en la que queremos insertar el breakpoint o bien mediante el menú debug. Si lo que queremos es ejecutar paso a paso pulsamos F10 o para meternos dentro de las funciones F11 (menú debug StepOver, StepInto). Para probarlo usaremos un emulador. En Visual Studio hay un desplegable que permite ver los emuladores instalados. En ese menú desplegable seleccionaremos el emulador que queramos ejecutar (es posible que al depurar nos pregunte de nuevo por el emulador a utilizar). Pulsaremos ahora F10 y comenzará la ejecución. Al comenzar la depuración el entorno de desarrollo cambia y nos muestra nuevas ventanas:

5 Línea donde se encuentra la ejecución Pila de llamadas Ventana de Automático: Variables en uso en cada momento Variables locales: Variables el método en comandos

6 Si pulsamos F10, ejecutará la primera instrucción MiAplicacion.factorial(2); y continuará por la siguiente. Si en la siguiente en lugar de pulsar F10, pulsamos F11, se introducirá en el método factorial, si posteriormente, en el método factorial volvéis a pulsar F11 en la llamada recursiva, volverá a llevaros a factorial. Comprobadlo, echadle un vistazo a la pila de llamadas y podréis ver el efecto de la recursividad en la pila de llamadas: Observad también como varía en valor de las variables mediante las ventanas de Automático y Variables Locales. Estas ventanas permiten cambiar el valor de las variables que se están utilizando. Las tripas del programa, MSIL (MS Intermediate Language) Para ver el código intermedio, generado por el compilador de C#, tendremos que usar una herramienta llamada ildasm.exe que es un desensamblador de MSIL. Como es posible que sea difícil de localizar dentro de la maraña de directorios de Windows y como probablemente no esté en el PATH, una buena forma de usar las utilizades asociadas a Visual Studio es mediante la consola Visual Studio Command Prompt. Cuando aparezca esta consola, ejecuta ildasm.exe y aparecerá una utilidad gráfica. Buscamos el fichero binario MiAplicación.exe y lo analizamos con el desensamblador de lenguaje intermedio. Como se pude ver, no existe el método factorial, pero si nos fijamos en el main, podremos comprobar que, como medida de eficiencia, el compilador lo ha incluido en el interior de main.

7 Más adelante veremos cómo varía el código intermedio con programas más complejos. Acceso a ficheros para depurar Ahora que sabemos cómo depurar un programa, ver el contenido del código intermedio etc, vamos a continuar. Las plataformas Windows Mobile no disponen de consola (se puede instalar usando algunas utilidades GNU) por lo que no es posible hacer depuración sobre consola, pero si en fichero de texto, que además es muy útil. Para hacer esto vamos a crear un ensamblado o librería de log. En primer lugar vamos a dar un espacio de nombres a nuestra aplicación. Hasta el momento, no hemos necesitado que nuestra aplicación tuviera un nombre único, que la diferenciara de las demás a efectos de reutilizar código, pero ahora va a ser necesario; por esta razón, cambiamos el código de la práctica por el siguiente: using System; namespace ComputacionRed.MiAplicacion public class MiAplicacion public static void Main(string[] args) MiAplicacion ma = new MiAplicacion(); /* de momento no hace nada */

8 Acto seguido miramos las propiedades de la aplicación y cambiamos el nombre del ensamblado en la configuración: Una vez hecho esto vamos a crear un nuevo proyecto. Sobre MiSolución, botón derecho Añadir nuevo proyecto. Tipo Class Library. El nombre que le daremos será UtilidadLog. Cambiamos el namespace de la aplicación tal y como aparece bajo estas líneas. using System; using System.Collections.Generic; using System.Text; namespace Utilidades.UtilidadLog public class Log Actualice la información en las propiedades, de forma que el nombre del ensamblado y el espacio de nombres predeterminado sean Utilidades.UtilidadLog Observa que el nombre de la clase es independiente del nombre del fichero, no ocurre igual en java. A continuación daremos funcionalidad a la clase de Log, de forma que podamos escribir información a un fichero que permita depurar el programa. Para ello, es necesario declarar en

9 el código mediante using qué parte de la Base Class Library se utilizará. En concreto usaremos System.IO. Para escribir en un fichero usaremos la clase TextWriter, cuya documentación puede encontrarse en es/library/system.io.textwriter(vs.80).aspx. La función de log se utilizará en adelante para probar el correcto funcionamiento del programa y debido a que las aplicaciones gráficas que veremos más adelante son multihilo (si pulsas un botón y la ejecución tarda, puede que al pulsar otro botón se genere otro hilo de ejecución) y a que el fichero sobre el que vamos a escribir es un recurso compartido: hay que usar un Mutex. El paquete que tiene la implementación de TextWriter es System.IO y el que contiene la implementación de Mutex es System.Threading. A continuación se muestra como utilizar ambos en el programa de la clase Log. Esta clase muestra cómo usar un mutex y como escribir en un fichero de texto. using System; using System.IO; using System.Collections.Generic; using System.Text; using System.Threading; namespace Utilidades.UtilidadLog public class Log /* TextWriter */ TextWriter tw = null; Mutex filemutex; int indent = 0; public Log(string filename) tw = new StreamWriter(fileName,true); filemutex = new Mutex(); ~Log() tw.flush(); tw.close(); public void Trace(String msg) filemutex.waitone(); for (int i = 0; i < indent; i++) tw.write("\t"); tw.write(msg); tw.flush(); filemutex.releasemutex();

10 public void BeginTrace(String fname) indent++; Trace(DateTime.Now.Hour +":"+ DateTime.Now.Minute + ":: Entrando en " + fname + "\n"); public void EndTrace(String fname) indent--; Trace(DateTime.Now.Hour + ":" + DateTime.Now.Minute + ":: Entrando en " + fname + "\n"); public void Trace(String fname, String msg) Trace(DateTime.Now.Hour + ":" + DateTime.Now.Minute + "::" + fname + "::" + msg + "\n"); Los atributos de la clase Log son una referencia a la clase Textwriter, que permite escribir al fichero; un semáforo Mutex, que controlará el acceso al recurso compartido (fichero) ; y una variable de tipo entero que almacena la indentación a añadir a cada línea. El constructor de la clase crea una instancia de la clase Textwriter proporcionándole el nombre del fichero a utilizar. Si compruebas la documentación del constructor de StreamWriter podrás ver qué implica el segundo parámetro (true). A continuación podemos ver una función cuanto menos extraña para aquellos sin experiencia en C++. Es la función ~Log() que se conoce como destructor. En C++ esa función se utiliza para liberar memoria una vez concluye la ejecución de la clase y el objeto se destruye. E n los lenguajes como Java o cualquiera de los presentes en.net, no es necesario liberar memoria, eso lo hace el recolector de basura; en cambio, se permite el uso de esta función para realizar una serie de tareas antes de destruir el objeto (como en este caso, hacer flush y cerrar el fichero). Aunque no es necesario, en ocasiones es útil. El siguiente método, es Trace. Este método escribe una traza de log en el fichero. Primero comprueba el semáforo y si es necesario espera un tiempo dado hasta que deje de ser usado. En ese momento tabula el texto, escribe el mensaje, hace flush y por último libera el semáforo para que otros métodos puedan usar el fichero. El resto de los métodos no requieren explicación.

11 Utilizando la clase Log desde otro programa Para poder utilizar la clase Log desde MiAplicación, hacemos click con el botón derecho sobre la carpeta References contenida en el proyecto aplicación y luego sobre Add Reference. Vamos a la pestaña Proyectos y ahí encontraremos UtildadLog. La seleccionamos y pulsamos aceptar. A partir de ese momento podremos utilizar la clase Log, contenida en el espacio de nombres Utilidades.UtilidadLog. A continuación probaremos la clase Log, pero antes vamos a facilitar la tarea modificando las propiedades del emulador. Para ello, en el menú File del emulador, seleccionamos configure cuando aparece el cuadro de diálogo en la caja de texto Shared Folder navegamos hasta la ruta donde se encuentre la aplicación compilada, es decir, carpetadelproyecto\bin\debug. A partir de ese momento si abrimos el explorador de ficheros en la PDA emulada y navegamos, veremos que existe un directorio llamado Storage Card que simula una tarjeta SD introducida en el slot. Si consultamos los ficheros contenidos en ella, veremos cómo aparecen los contenidos en el directorio seleccionado. Ahora vamos a modificar el programa para probar la clase de Log. Utilice el siguiente código:

12 using System; using Utilidades.UtilidadLog; namespace ComputacionRed.MiAplicacion public class MiAplicacion Log log; public MiAplicacion() log = new Log("\\Storage Card\\milog.txt"); public void mifuncion2() log.begintrace("mifuncion2"); log.trace("mifuncion2", "Un mensaje de mifuncion2"); log.endtrace("mifuncion2"); public void mifuncion() log.begintrace("mifuncion"); log.trace("mifuncion2", "Un mensaje de mifuncion1"); mifuncion2(); log.endtrace("mifuncion"); public static void Main(string[] args) MiAplicacion ma = new MiAplicacion(); ma.mifuncion(); Como se puede apreciar, el fichero seleccionado para guardar los resultados del log se encuentra en la carpeta de la aplicación dentro del PC (no de la PDA). Lo siguiente que haremos, será probar la aplicación. Para ver el fichero con comodidad (puede verse directamente en la PDA emulada, pero debido a que el tamaño de la pantalla no es muy grande, es preferible hacerlo en el PC) lo abrimos con visual studio. A partir de este momento no hace falta cerrarlo y volverlo a abrir para ver los cambios, si el fichero cambia, Visual Studio lo notificará. El resultado de la ejecución debe ser algo similar a esto:

13 2:34:: Entrando en mifuncion 2:36:: Entrando en mifuncion 2:36::mifuncion2::Un mensaje de mifuncion1 2:36:: Entrando en mifuncion2 2:36::mifuncion2::Un mensaje de mifuncion2 2:36:: Entrando en mifuncion2 2:36:: Entrando en mifuncion Observe que una llamada a una función dentro de otra función aumenta la indentación. Práctica 2. Introducción a.net, programación gráfica. El objetivo de esta práctica es programar una aplicación sencilla para familiarizarnos con el entorno visual de programación de.net con Formularios de Windows. Conociendo el Entorno de Desarrollo Comenzamos por crear un nuevo proyecto con Visual Studio 2005 o 2008: Una vez pulsemos, aparecerá en la pantalla los posibles proyectos. El número y tipo de proyectos dependerá de los SDKs instalados en el sistema: Vamos a crear un proyecto Visual C#, para dispositivo limitado (Smart Device), usando el SDK de Windows Mobile 5.0 o 6.0 dependiendo del que tengamos instalado. La plantilla del proyecto es Device Application. Le damos un nombre, por ejemplo miapp. Seleccionamos la ubicación que más nos convenga. Todos los proyectos que hagamos, se incorporan a una solución, utilizaremos la

14 solución que ya teníamos creada. Una vez creado, aparecerá el interfaz de usuario. En el que podemos ver una imagen de lo que será el programa. Además existen menús útiles para el desarrollo como son (Están identificados en la imagen): El explorador de soluciones Vista de clases Propiedades Toolbox Resultados Lista de errores Si no ves alguno de las pestañas marcadas con círculos sobre las imágenes, puedes usar el menú View (ver) y pulsar sobre cada una de las que necesitas. Luego puedes arrastrarlas por la pantalla para colocarlas donde te resulten más cómodas de usar.

15 Aplicación Hello world Se trata de la aplicación que todo el mundo ha hecho alguna vez para comenzar a aprender un lenguaje. La aplicación tiene el efecto positivo de mostrar al usuario que algo funciona, a partir de ahí lo que imagines Un vistazo al código Antes de comenzar con la aplicación vamos a echar un vistazo al código generado por Visual Studio y que nos permitirá programar la aplicación. Vamos a ver el programa principal, la clase que permite la ejecución del formulario o ventana sobre la que colocaremos controles como botones o cajas de texto. Para ver el código pulse sobre program.cs como indica la figura: Al hacer esto, pulsar sobre Ver Código o hacer doble click sobre Program.cs, aparece el código en la pantalla principal. El código que se verá será este (o muy parecido): using System; using System.Collections.Generic; using System.Windows.Forms; namespace miapp static class Program /// <summary> /// The main entry point for the application. /// </summary> [MTAThread] static void Main() Application.Run(new Form1()); Este código es un programa principal como el que hemos visto en la anterior práctica, la única diferencia es que ahora existe un atributo llamado MTAThread que se usa en las aplicaciones de Formularios para conocer el lugar en el que comienza el programa. Consulta el código de la clase Form1.cs, comprobarás que es una clase que hereda de Form (la que gestiona los formularios en Windows). A continuación vamos a añadir funcionalidad a la aplicación. Para comenzar, debes poder usar el ToolBox o caja de herramientas. En ella encontrarás componentes gráficos para añadir a tu aplicación.

16 Para añadir nuevos controles gráficos, simplemente arrástralos desde el toolbox directamente a la pantalla.

17 Añade varios elementos:

18 Un textbox Un botón con el nombre hola Otro con el nombre mundo Cada uno de los controles que se colocan en la pantalla tiene una serie de propiedades. Una es el nombre dentro del programa Name otra es la información que aparece en pantalla Caption. Al hacer dobre click sobre un botón, Visual Studio creará un método. Este método puede usarse para cambiar las propiedades de los controles. Añada también unas etiquetas Label de modo que el interfaz de usuario quede de la siguiente manera: Tu turno: Da un nombre adecuado al namespace

19 Coloca entradas de Log para ver qué ocurre con la aplicación. Pon una al comienzo de cada clase y método, de forma que veas el flujo de la ejecución. Para ello, tendrás que importar la clase de Log (añadir referencia ) Tendrás que pasar la instancia de Log de una clase a otra para que todos escriban sobre el mismo fichero. Para ello, añade un atributo Log a la clase Form1. public partial class Form1 : Form Log log; public Form1() InitializeComponent(); log = new Log("\\Storage Card\\fichero.txt"); Añade funcionalidad a los métodos de los botones Hola y Mundo de forma que al pulsar el primero aparezca la palabra Hola en el cuadro de texto. Para modificar el texto utiliza la propiedad Text de del cuadro de texto.

20 Práctica 3. Introducción a sockets en.net Ahora que conoces el API de sockets de otros sistemas operativos y lenguajes como Java, vamos a aprender cómo usar sockets desde.net con el lenguaje C#. En esta práctica, usaremos el Framework de.net en lugar del Compact Framework, en cualquier caso, el contenido de estas prácticas es trasladable a pocket pc directamente. Estructura de clases Para utilizar sockets es necesario importar las librerías de la class library System.Net y System.Net.Sockets. Para ello, creamos un proyecto de tipo aplicación visual con el SDK correspondiente y le damos el nombre de VistaCliente.cs al fichero de código con el formulario. El otro fichero será program.cs. Introducimos el siguiente código en los ficheros:

21 /* Programa.cs */ using System; using System.Text; using System.Collections.Generic; using System.Windows.Forms; using System.Net; using System.Net.Sockets; using System.Diagnostics; namespace ComputacionRed.Sockets.Cliente static class Program /// <summary> /// The main entry point for the application. /// </summary> [MTAThread] static void Main() /* VistaCliente.cs [Formulario-Ver código]*/ using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace ComputacionRed.Sockets.Cliente public partial class VistaCliente : Form public VistaCliente() InitializeComponent();

22 La clase VistaCliente, es una clase que hereda de Form, por tanto se utiliza para proporcionar una GUI al usuario. Por otro lado, tendremos una clase controlador ClienteConnection que crearemos dentro del fichero programa.cs: /* Programa.cs */ using System; using System.Text; using System.Collections.Generic; using System.Windows.Forms; using System.Net; using System.Net.Sockets; using System.Diagnostics; namespace ComputacionRed.Sockets.Cliente static class Program /// <summary> /// The main entry point for the application. /// </summary> [MTAThread] static void Main() public class ClienteConnection IPAddress dirservidor; Int32 serverport = 0; IPEndPoint endpointservidor; Socket socket; Form vv = null; writelog log = null; public ClienteConnection(Form vv) this.vv = vv; /* destructor */ ~ClienteConnection() try if (socket!= null) if (socket.connected) socket.disconnect(false); catch (Exception ex) /* lo hemos intentado... */

23 En la clase ClienteConnection tendremos los siguientes atributos: IPAddress dirservidor : Estructura de dirección IP para conectar con el servidor o us/library/system.net.ipaddress.aspx IPEndPoint endpointservidor: Contiene tanto la dirección IP como el puerto local etc necesarios para conectar con el servidor o us/library/system.net.ipendpoint.aspx Int32 serverport: puerto del servidor Socket socket: estructura donde alojar el estado del socket o us/library/system.net.sockets.socket.aspx o API de sockets de Berkeley Form vv : Para poder controlar la visualización writelog log: Lo veremos más adelante, es un callback (delegado en.net) Localice el constructor de la clase ClienteConnection. Qué parámetro recibe? Qué hace el destructor de la clase ClienteConnection? En la clase VistaCliente usaremos el siguiente código para el constructor y los métodos de inicialización: public delegate void writelog(string msg); public partial class VistaCliente : Form ClienteConnection cc = null; byte[] sendbytes; byte[] receivebytes = new byte[2048]; public VistaCliente() InitializeComponent(); public void setcontroller(clienteconnection cc) this.cc = cc; La clase VistaCliente tiene los siguientes atributos: ClienteConnection cc = enlace con el controlador byte[] sendbytes: buffer de datos a enviar al servidor byte[] receivebytes: buffer de datos con la respuesta del servidor. Si echamos un vistazo al código anterior, veremos una declaración similar a un tipo: public delegate void writelog(string msg);

24 Consiste en un puntero a función, es decir, existe un tipo de función llamada writelog, que recibe una String y la imprime para que el usuario tenga información a modo de log. Interfaz gráfico A continuación vamos a diseñar el siguiente interfaz gráfico: servernametextbox textcheckboxuserinput button1 IPTextbox serverport senddatatextb oxuserinput conectbutton sendbutton ConnectionState updatebinary Button testconnectionbutton binarysenddata responsetext responsebinary logtextbox Como puedes comprobar, hay varios controles (cajas de texto, botones, checkbox ) y algunos de ellos están introducidos dentro de un contenedor. Esto es opcional, en cualquier caso, el control que engloba a los demás (como por ejemplo Connection que engloba 3 cajas de texto, tres botones y un label) puedes localizarlo en el toolbox como GroupBox. Para que el código que se proporciona en los siguientes apartados funcione correctamente, debes asegurarte de que los diferentes controles tienen la propiedad Name (dentro del apartado Design) que se indica en las cajas de texto apuntadas por las diferentes flechas.

25 Función de log A continuación vamos a resolver el problema del log. En la clase VistaCliente creamos la función writelog como se muestra a continuación: public void setcontroller(clienteconnection cc) this.cc = cc; public void writelog(string msg) logtextbox.appendtext(msg); Dicha función escribe añade texto en la caja de texto logtextbox cuando se la invoca. Si prestamos atención, veremos que dicho método tiene los mismos tipos definidos en la declaración del apartado anterior public delegate void writelog(string msg) por lo que puede usarse como delegado. En la clase ClienteConnection, inmediatamente después del destructor, creamos los métodos: /* set log */ public void setlogfn(writelog fn) this.log = fn; /* write log */ public void trace(string msg) StackTrace st = new StackTrace(false); string caller = st.getframe(1).getmethod().name; log(caller + " : " + msg + "\r\n"); /* presenta la vista */ public Form getvista() return vv; El método setlogfn recibe un puntero a una función de tipo writelog y la guarda en el atributo log. En método trace recibe una string, contruye un pila de llamadas y accede a la anterior para conocer desde que función ha sido llamada la función de log para así incluirlo en el texto de la línea de log. Finalmente, escribe la línea y le añade al final un retorno de carro y vuelve al comienzo de la línea ( \r\n es equivalente al \n de C/C++). La función getvista devuelve una instancia de la clase Form, así tanto el controlador como la vista, permanecen unidos. Compruebe como ambas clases VistaCliente y ClienteConnection están enlazadas

26 Sustituye el código del main por el siguiente: static class Program /// <summary> /// The main entry point for the application. /// </summary> [MTAThread] static void Main() ClienteConnection cc = new ClienteConnection(new VistaCliente()); ((VistaCliente)cc.getVista()).setController(cc); cc.setlogfn(((vistacliente)cc.getvista()).writelog); Application.Run(cc.getVista()); Qué hace el código? Comprobando la conectividad En este apartado vamos a comprobar la conectividad de la red antes de usarla. Para ello, el usuario dispone de un botón con el mensaje Test connection que cambiará el label ConnectionState indicando ok o error dependiendo del problema. En primer lugar vamos a diseñar dicha función. Para dar un error detallado sería necesario interrogar al API de NDIS de Windows (controla los dispositivos de red) de forma que se pudiera averiguar si existe conectividad o no, pero lo vamos a hacer desde el nivel más alto, desde sockets. Lo primero que haremos será definir un tipo enumerado con los posibles errores o estados: public enum connstate ok = 0, dnsproblem = 1, socketproblem = 2, dnsandsocketproblem = 3, networkerrororunreachable = 4 Los posibles estados son: 1. No hay error 2. Existe un problema con el DNS (lo cual no significa que no haya conexión) 3. Problema con la librería de sockets, con independencia del DNS no se puede abrir una conexión. 4. Hay problemas con el DNS y con los sockets 5. Es posible crear un socket pero probablemente la conexión sólo es local o un firewall bloquea el tráfico

27 A continuación, vamos a plantear la estrategia del test: 1. Tratamos de resolver el nombre a. Si falla dnsproblem y continuamos 2. Tenemos o no DNS, pero puede que sólo local a. Tratamos de conectar a una IP y si hay éxito continuamos b. Tratamos de conectar a una IP y si no hay éxito salimos con error socketproblem o dnsandsocketproblem. 3. Tratamos de descargar una página web a. Si hay éxito: ok b. Si falla: networkerrororunreachable Por lo tanto, el código del método para probar la conectividad es el siguiente (inclúyelo como métodos de la clase ClienteConnection: private connstate geterror(connstate current, connstate promoteto) trace("fetch error"); if (current == connstate.ok) return promoteto; if (current == connstate.dnsproblem) if (promoteto == connstate.socketproblem) return connstate.dnsandsocketproblem; else return promoteto; return promoteto; public String gettestconnectionresultstring() return testsocketconnection().tostring(); private connstate testsocketconnection() trace("testing client connection"); connstate res = connstate.ok; String testhttp = "GET /index.html HTTP/1.0\n\n"; String httpdoc = null; int recvlength = 0; Byte[] SendBytes = Encoding.ASCII.GetBytes(testHttp); Byte[] RecvBytes = new Byte[1024]; IPAddress testip = null; IPEndPoint testendpoint = null; Socket testsocket = null; try testip = Dns.GetHostEntry("www.google.es").AddressList[0]; testendpoint = new IPEndPoint(testIP, 80);

28 catch (Exception ex) trace("dns seems to be unavailable"); res = geterror(res, connstate.dnsproblem); try testip = Dns.GetHostEntry(" ").AddressList[0]; testendpoint = new IPEndPoint(testIP, 80); testsocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); catch (Exception ex) trace("something wrong with sockets"); return geterror(res, connstate.socketproblem); try testsocket.connect(testendpoint); testsocket.send(sendbytes, SendBytes.Length, SocketFlags.None); recvlength = testsocket.receive(recvbytes, RecvBytes.Length, SocketFlags.None); catch (Exception ex) trace("error connecting"); return geterror(res, connstate.networkerrororunreachable); httpdoc = Encoding.ASCII.GetString(RecvBytes, 0, recvlength); //Codificamos la respuesta trace("finished"); return res; Acabas de ver tu primer programa con sockets en.net: Cuál es el proceso para abrir una conexión con otro equipo? Qué NameSpaces se utilizan? Qué clases? Notas diferencias con otros APIs? Ahora incorpora la funcionalidad al botón de prueba (doble click y Visual Studio generará el método, el código es el siguiente: private void testconnectionbutton_click(object sender, System.EventArgs e) ConnectionState.Text = cc.gettestconnectionresultstring();

29 Interactuando con un servidor, preparando los datos Antes de comenzar a enviar datos al servidor, es necesario prepararlos. El cliente que estamos diseñando permite introducir datos de dos formas: 1. En modo texto: cualquier letra introducida se codifica con ASCII y se envía salvo el código \n que se traduce a retorno de carro. Esto es interesante por si se quiere usar HTTP directamente o para probar un servidor que estamos programando a. Para ello, el usuario introduciría GET /index.html HTTP/1.0\n\n directamente en el cuadro de texto senddatatextboxuserinput, haría click en la casilla textcheckboxuserinput (mirar la figura del GUI) y luego en updatebinarybutton 2. Modo hexadecimal: Se introduce la información en hexadecimal. Si se quiere introducir un buffer de datos 2FC487, se teclea 2F C4 87 y no se marca la casilla de modo texto. En cualquier caso, siempre es necesario pulsar el botón Update Binary antes de enviar algo al servidor. Por lo tanto, necesitamos un método que prepare los datos del usuario para su envío al servidor. El método se invoca cuando se pulsa el botón updatebinarybutton. Por tanto, para programarlo, haga doble click sobre dicho botón. Analiza el siguiente código y úsalo: private void updatebinarybutton_click(object sender, System.EventArgs e) sendbytes = null; binarysenddata.text = ""; String senddatatext = ""; int posicion = -1; if (textcheckboxuserinput.checked && senddatatextboxuserinput.text.length!= 0) if (senddatatextboxuserinput.text.indexof("\\n")!= -1) /* hay retorno(s) de carro (http/telnet) */ String[] subs = senddatatextboxuserinput.text.split(new String[] "\\n", StringSplitOptions.None); for (int i = 0; i < subs.length; i++) if (subs[i].equals("")) senddatatext += "\n"; else senddatatext += subs[i]; else senddatatext = senddatatextboxuserinput.text; sendbytes = Encoding.ASCII.GetBytes(sendDataText); else if (senddatatextboxuserinput.text.length >= 2) string delimiter = " ";

TUTORIAL APLICACIONES EVOLUTION CON ACTIVEX EVOLINK

TUTORIAL APLICACIONES EVOLUTION CON ACTIVEX EVOLINK TUTORIAL APLICACIONES EVOLUTION CON ACTIVEX EVOLINK 1 Introducción... 2 2 Requisitos previos... 2 3 Desarrollo de una aplicación call center.net con ActiveX evolink... 2 3.1 Crear un proyecto inicial...

Más detalles

Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK.

Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK. Introducción Java surgió en 1991 dentro de la empresa Sun Microsystems como un lenguaje de programación sencillo y universal destinado a electrodomésticos. La reducida potencia de cálculo y memoria de

Más detalles

Práctica: Creación de un programa C# sencillo

Práctica: Creación de un programa C# sencillo Introducción a C# 1 Práctica: Creación de un programa C# sencillo Objetivos Al final de esta práctica, usted será capaz de: Crear un programa C#. Compilar y ejecutar un programa C#. Usar el Visual Studio

Más detalles

.NET Compact Framework

.NET Compact Framework .NET Compact Framework Profesor: Dr. Jesús Soto Carrión (jesus.soto@upsam.net) Master de Ingeniería Web Desarrollo de aplicaciones para dispositivos móviles Contenido de la presentación Introducción Arquitectura

Más detalles

C.F.G.S. DESARROLLO DE APLICACIONES INFORMÁTICAS. MÓDULO: Diseño y realización de servicios de presentación en entornos gráficos.

C.F.G.S. DESARROLLO DE APLICACIONES INFORMÁTICAS. MÓDULO: Diseño y realización de servicios de presentación en entornos gráficos. C.F.G.S. DESARROLLO DE APLICACIONES INFORMÁTICAS MÓDULO: Diseño y realización de servicios de presentación en entornos gráficos Unidad 1 Introducción Visual Basic.NET El objetivo de la unidad es conocer

Más detalles

[Titulo] : Creacion de un Troyano de Conexion Inversa [Lenguaje] : C# [Autor] : Doddy Hackman. [Temario]

[Titulo] : Creacion de un Troyano de Conexion Inversa [Lenguaje] : C# [Autor] : Doddy Hackman. [Temario] [Titulo] : Creacion de un Troyano de Conexion Inversa [Lenguaje] : C# [Autor] : Doddy Hackman [Temario] -- =================-------- 0x01 : Introduccion 0x02 : Creacion del servidor 0x03 : Creacion del

Más detalles

Introducción a la programación con C#.

Introducción a la programación con C#. Introducción a la programación con C#. El programa básico, Hola Mundo. El siguiente programa es la versión C# que muestra la cadena Hola Mundo por consola. // Programa C# que muestra Hola Mundo por consola.

Más detalles

Taller: Introducción a Windows Communication Foundation

Taller: Introducción a Windows Communication Foundation Taller: Introducción a Windows Communication Foundation Autor: Carlos Milán Figueredo Nivel: 100 (Principiante) Pre-requisitos: Visual Studio 2008 Email: cmilanf@dotnetclubs.com Web: http://www.dotnetclubs.com

Más detalles

Programación para dispositivos móviles con.net CF... Comunicaciones por Bluetooth

Programación para dispositivos móviles con.net CF... Comunicaciones por Bluetooth Programación para dispositivos móviles con NET CF Comunicaciones por Bluetooth Objetivos Desarrollar aplicaciones que comuniquen vía Bluetooth; Material a utilizar Visual Studio 2005 + Pocket PC 2005 SDK;

Más detalles

Aplicaciones Windows con Microsoft Visual Studio 2010...

Aplicaciones Windows con Microsoft Visual Studio 2010... Aplicaciones Windows con Microsoft Visual Studio 2010... Insertar un Link o Vínculo en una Aplicación Windows El presente es un pequeño manual/tutorial que nos indica los pasos que debemos seguir para

Más detalles

Para esto, he desarrollado una aplicación en Visual Studio con tres proyectos, como se presenta en la siguiente ilustración:

Para esto, he desarrollado una aplicación en Visual Studio con tres proyectos, como se presenta en la siguiente ilustración: Caso Práctico: Diffie-Hellman sobre socket de C# Este caso práctico se abordará en el ámbito de aplicaciones cliente/servidor; programación con Socket. Se aplicará el lenguaje C#, el.net Framework 3.5

Más detalles

Trabajo Práctico N 4

Trabajo Práctico N 4 Trabajo Práctico N 4 Implementación de cliente y servidor TCP (y UDP) en C# (.NET), utilización de hilos para el manejo asincrónico de las comunicaciones Universidad de Buenos Aires Facultad de Ingeniería

Más detalles

Automatización Industrial

Automatización Industrial ESCUELA SUPERIOR DE INFORMÁTICA UNIVERSIDAD DE CASILLA-LA MANCHA Automatización Industrial Programación de la Interfaz FTI con C# Tercera práctica Jose Domingo López López josed.lopez1@alu.uclm.es Raúl

Más detalles

Curso de Visual Basic 6.0 - Lección 1 Area Interactiva - www.areaint.com. www.areaint.com CURSO DE. Visual Basic 6.0 WWW.AREAINT.

Curso de Visual Basic 6.0 - Lección 1 Area Interactiva - www.areaint.com. www.areaint.com CURSO DE. Visual Basic 6.0 WWW.AREAINT. www.areaint.com CURSO DE Visual Basic 6.0 Pág. 1 LECCIÓN 1 En esta lección de introducción aprenderemos las principales características de un lenguaje de programación para crear aplicaciones bajo Windows.

Más detalles

Práctica 5: Servidor web concurrente en Java

Práctica 5: Servidor web concurrente en Java Práctica 5: Servidor web concurrente en Java Esta práctica pretende familiarizar al alumno con la programación de servidores que emplean sockets TCP. Para ello partiremos del servidor web básico visto

Más detalles

ELEMENTOS DE INTERFAZ GRAFICA WindowsForms

ELEMENTOS DE INTERFAZ GRAFICA WindowsForms Capítulo 6 ELEMENTOS DE INTERFAZ GRAFICA WindowsForms Los programas de computador modernos, al menos en un alto porcentaje, a los que se enfrenta el usuario se caracterizan por un aspecto en común: ponen

Más detalles

Herramientas Visuales de Programación

Herramientas Visuales de Programación Pág. 1 07/04/2013 Para la compilación y ejecución del código que se realizará a lo largo de este curso vamos a utilizar el entorno de programación de la Herramienta Visual Studio 2010. El entorno de programación

Más detalles

Proyecto visual C# 2005 Express Edition: Imprimir Página 1 de 5

Proyecto visual C# 2005 Express Edition: Imprimir Página 1 de 5 Proyecto visual C# 2005 Express Edition: Imprimir Página 1 de 5 PROYECTO Imprimir: Crear un Nuevo Proyecto desde Visual C# 2005 Express Edition, del tipo Aplicación de Escritorio para Windows, con el nombre

Más detalles

TUTORIAL CONEXIÓN SQL SERVER 2005 CON VISUAL STUDIO 2005(TECNOLOGIA RAD)

TUTORIAL CONEXIÓN SQL SERVER 2005 CON VISUAL STUDIO 2005(TECNOLOGIA RAD) TUTORIAL CONEXIÓN SQL SERVER 2005 CON VISUAL STUDIO 2005(TECNOLOGIA RAD) Resumen:En este tutorial, aprenderá a sacar el máximo partido a las capacidades de diseño integradas en Visual Studio 2005 para

Más detalles

Servicios Web con.net

Servicios Web con.net 1. Introducción a los servicios Web Servicios Web con.net Básicamente un servicio Web es un clase que se publica en un servidor Web con soporte para ASP.NET (actualmente el único disponible es el Internet

Más detalles

Introducción al programa EasyPHP.

Introducción al programa EasyPHP. Introducción al programa EasyPHP. EasyPHP es un paquete fácil de instalar y configurar cuya misión es instalar Apache, MySQL, Php y PhpMyAdmin en una máquina que disponga del S.O. Windows 9x, 2k y XP.

Más detalles

Finalmente, aprenderá a interceptar y a manejar muchos de los eventos comunes que tienen los componentes y los formularios de Windows Form.

Finalmente, aprenderá a interceptar y a manejar muchos de los eventos comunes que tienen los componentes y los formularios de Windows Form. Sistemas expertos e Inteligencia Artificial,Guía 1 Facultad : Ingeniería Escuela : Computación Asignatura: Sistemas expertos e Inteligencia Artificial Tema: INTRODUCCIÓN AL IDE C#. Objetivo Identificar

Más detalles

C#.NET. Capítulo 1. Este libro está dirigido a todas aquellas. personas que desean aprender. el lenguaje de programación C# y tienen

C#.NET. Capítulo 1. Este libro está dirigido a todas aquellas. personas que desean aprender. el lenguaje de programación C# y tienen C# Capítulo 1 C#.NET Este libro está dirigido a todas aquellas personas que desean aprender el lenguaje de programación C# y tienen conocimientos básicos de programación o no tienen ninguna experiencia

Más detalles

Nota: esta practica se ha preparado para Netbeans 5.5, pero en principio vale también para Netbeans 6.

Nota: esta practica se ha preparado para Netbeans 5.5, pero en principio vale también para Netbeans 6. Practica 1: Netbeans Asignatura de Programación Licenciatura de Linguistica y Nuevas Tecnologias El objetivo de esta practica es familiarizarse con el entorno Netbeans y sus funcionalidades más básicas,

Más detalles

Introducción a JAX-WS Web Services

Introducción a JAX-WS Web Services INSTITUTO POLITECNICO NACIONAL ESCUELA SUPERIOR DE CÓMPUTO ALUMNO: SANLUIS CASTILLO JOSE DAVID PROFESOR: CIFUENTES ALVAREZ ALEJANDRO SIGFRIDO MATERIA: WEB APPLICATION DEVEPLOMENT Introducción a JAX-WS

Más detalles

Programación 2 Curso 2013 2014. Guía de desarrollo C/C++ con Eclipse

Programación 2 Curso 2013 2014. Guía de desarrollo C/C++ con Eclipse Programación 2 Curso 2013 2014 Introducción Guía de desarrollo C/C++ con Eclipse Eclipse 1 es un entorno de programación que permite el desarrollo de aplicaciones en diferentes lenguajes. Consta de un

Más detalles

" ##$ % & '( % & )*+),$ -##$ -!- $! "-./ - 0WebClass1-2

 ##$ % & '( % & )*+),$ -##$ -!- $! -./ - 0WebClass1-2 ! " ##$ % & '( % & )*+),$ -##$ -!- $! "-./ - 0WebClass1-2!" # 345 637 6$5!!!89 & 5 :8-7 & & ;(< 8 $ + - 8 : #= ' 7= : 0 & 0 &- =.> = ;(("9 &? WebClass - 1@#$% &'A1 ;(< 8- ( ) * *+ " $ % B9 5 5 # :!- WebClass

Más detalles

Programación III. 1. Facultad: Ingeniería Escuela: Computación Asignatura:Programación III I. OBJETIVOS II. INTRODUCCIÓN TEÓRICA

Programación III. 1. Facultad: Ingeniería Escuela: Computación Asignatura:Programación III I. OBJETIVOS II. INTRODUCCIÓN TEÓRICA Programación III. 1 Facultad: Ingeniería Escuela: Computación Asignatura:Programación III GUIA1: Uso de C# modo consola. I. OBJETIVOS Qué el estudiante: Conozca el lenguaje de programación Visual C#.Net

Más detalles

www.aprendoencasa.com Curso Introducción JAVA Pág.: 1

www.aprendoencasa.com Curso Introducción JAVA Pág.: 1 www.aprendoencasa.com Curso Introducción JAVA Pág.: 1 Introducción Java es un lenguaje basado en la programación orientada a objetos (POO), este tipo de programación va más allá del tipo de programación

Más detalles

Capítulo 1 EMBEDDED VISUAL C++ (EVC)

Capítulo 1 EMBEDDED VISUAL C++ (EVC) Capítulo 1 EMBEDDED VISUAL C++ (EVC) 0 Introducción En la presente práctica se pretender ofrecer la primera toma de contacto con el entorno de desarrollo que se usa para programar PDAs en el lenguaje de

Más detalles

COLEGIO DE BACHILLERES ELABORADO POR: ING. IVETT ZARZA HIDALGO Y LIC. CLAUDIA HERNÀNDEZ ALPÍZAR PROFA. DE INFORMATICA Y DE CECAT-INFORMATICA

COLEGIO DE BACHILLERES ELABORADO POR: ING. IVETT ZARZA HIDALGO Y LIC. CLAUDIA HERNÀNDEZ ALPÍZAR PROFA. DE INFORMATICA Y DE CECAT-INFORMATICA Visual Basic.NET es la última versión del sistema de desarrollo Visual Basic. Antes de empezar a crear aplicaciones en Visual Basic.NET, le será útil conocer y entender algunos conceptos básicos de.net.

Más detalles

GUÍA DE TRABAJO N 11 LENGUAJE C# Programación de Software Articulación SENA Grado 10 Ing. Néstor Raúl Suarez Perpiñan Página 2 de 11

GUÍA DE TRABAJO N 11 LENGUAJE C# Programación de Software Articulación SENA Grado 10 Ing. Néstor Raúl Suarez Perpiñan Página 2 de 11 Página 1 de 11 GUIA N 11 - DESARROLLO DE SOFTWARE A TRES CAPAS Objetivo: Desarrollar una aplicación de software con tres capas (Presentación Lógica Persistencia) donde se establezca una conexión con una

Más detalles

UNIVERSIDADE DA CORUÑA Departamento de Tecnoloxías da Información e as Comunicacións LABORATORIO DE RC: TUTORIAL DE SOCKETS EN JAVA

UNIVERSIDADE DA CORUÑA Departamento de Tecnoloxías da Información e as Comunicacións LABORATORIO DE RC: TUTORIAL DE SOCKETS EN JAVA UNIVERSIDADE DA CORUÑA Departamento de Tecnoloxías da Información e as Comunicacións LABORATORIO DE RC: TUTORIAL DE SOCKETS EN JAVA Índice 1. Presentación...3 2. Conceptos básicos...4 2.1. TCP...4 2.2.

Más detalles

PRACTICA 0:EL IDE DE C++ BUILDER 5.0

PRACTICA 0:EL IDE DE C++ BUILDER 5.0 PRACTICA 0:EL IDE DE C++ BUILDER 5.0 Introducción En esta práctica se van a realizar ejemplos sencillos referidos al entorno de programación de C++ Builder 5.0. El objetivo es familiarizarse con el entorno

Más detalles

Entorno de desarrollo Instalación y configuración

Entorno de desarrollo Instalación y configuración Entorno de desarrollo Instalación y configuración GExCALL Formación http://gexcall.unex.es/formacion El plugin ADT (Android Development Tools) extiende al IDE Eclipse. Te permite crear y depurar aplicaciones

Más detalles

Pasos para crear un sitio web ASP.Net con el Visual Studio en cualquiera de sus versiones. Unidad 1. Conceptos [ASP.NET EN VISUAL STUDIO]

Pasos para crear un sitio web ASP.Net con el Visual Studio en cualquiera de sus versiones. Unidad 1. Conceptos [ASP.NET EN VISUAL STUDIO] Pasos para crear un sitio web ASP.Net con el Visual Studio en cualquiera de sus versiones Conceptos Lo primero que necesitamos para crear una aplicación o proyecto web es seleccionar el entorno del Visual

Más detalles

Integración de Toolchain PTXdist sobre IDE gráfico basado en Eclipse

Integración de Toolchain PTXdist sobre IDE gráfico basado en Eclipse Integración de Toolchain PTXdist sobre IDE gráfico basado en Eclipse Objetivos Integrar un toolchain basado en PTXdist sobre un IDE gráfico basado en Eclipse. Creación y compilación de un pequeño proyecto.

Más detalles

http://www.oracle.com/technetwork/es/java/javase/downloads/index.html

http://www.oracle.com/technetwork/es/java/javase/downloads/index.html Introducción En esta primera parte del taller iremos viendo paso a paso como poner a punto todo tu entorno de trabajo para poder empezar cuanto antes a desarrollar tu primera aplicación Android para luego

Más detalles

NCover: Manual de usuario

NCover: Manual de usuario NCover: Manual de usuario Fecha: Referencia: EJIE S.A. Mediterráneo, 3 Tel. 945 01 73 00* Fax. 945 01 73 01 01010 Vitoria-Gasteiz Posta-kutxatila / Apartado: 809 01080 Vitoria-Gasteiz www.ejie.es Este

Más detalles

Tutorial. Configuración del entorno de programación Code::Blocks.

Tutorial. Configuración del entorno de programación Code::Blocks. Tutorial Configuración del entorno de programación Code::Blocks. Code::Blocks es un entorno de desarrollo multiplataforma para programación en C/C++. Se encuentra bajo una licencia GNU, lo cual lo hace

Más detalles

Tema: Introducción a Java y Netbeans

Tema: Introducción a Java y Netbeans 1 Tema: Introducción a Java y Netbeans Objetivo Especifico Conocer el uso básico del JDK para la compilación y ejecución de código java desde la linea de comando Conocer el entorno de desarrollo NetBeans

Más detalles

Gestor de aplicaciones Java. Esta herramienta es el intérprete de los archivos de clase generados por el javac (compilador).

Gestor de aplicaciones Java. Esta herramienta es el intérprete de los archivos de clase generados por el javac (compilador). CAPÍTULO 4 Requerimientos de software Este capítulo presenta las herramientas necesarias para la construcción y ejecución de programas en el lenguaje de programación JAVA, los requerimientos mínimos de

Más detalles

Federico Peinado www.federicopeinado.es

Federico Peinado www.federicopeinado.es Federico Peinado www.federicopeinado.es Depto. de Ingeniería del Software e Inteligencia Artificial disia.fdi.ucm.es Facultad de Informática www.fdi.ucm.es Universidad Complutense de Madrid www.ucm.es

Más detalles

CURSO DE PROGRAMACIÓN PHP MySQL

CURSO DE PROGRAMACIÓN PHP MySQL CURSO DE PROGRAMACIÓN PHP MySQL MASTER EN PHP MÓDULO NIVEL BASICO PRIMER MES Aprende a crear Sitios Web Dinámicos con PHP y MySQL 1. Introducción Qué es PHP? Historia Por qué PHP? Temas de instalación

Más detalles

Apéndice B. Telefonía a través de Microsoft TAPI 1. B1. Microsoft TAPI y algunos detalles de la corrida con CSLU Toolkit

Apéndice B. Telefonía a través de Microsoft TAPI 1. B1. Microsoft TAPI y algunos detalles de la corrida con CSLU Toolkit Apéndice B. Telefonía a través de Microsoft TAPI 1 B1. Microsoft TAPI y algunos detalles de la corrida con CSLU Toolkit El archivo que hace la llamada es TAPISend que se encuentra en formato ejecutable.

Más detalles

Introducción al lenguaje Java

Introducción al lenguaje Java Tipo de entrega: Fecha límite: Lugar: Introducción al lenguaje Java por grupos de prácticas sesión de laboratorio Atenea Objetivos de la práctica: Escribir aplicaciones simples en Java Utilizar el entorno

Más detalles

D:\IDENTIFICADOR_PRODUCTO\Identificador_Prod\Identificador_Prod\Form1.cs // +++++++++ PLATAFORMA BASE DE DATOS PARA TARIFACIÓN DE PRODUCTOS +++++++++

D:\IDENTIFICADOR_PRODUCTO\Identificador_Prod\Identificador_Prod\Form1.cs // +++++++++ PLATAFORMA BASE DE DATOS PARA TARIFACIÓN DE PRODUCTOS +++++++++ // +++++++++ PLATAFORMA BASE DE DATOS PARA TARIFACIÓN DE PRODUCTOS +++++++++ 1 /* El código que precede es el responsable de ejecutar funciones que permiten interactuar a la Base de datos en Microsoft

Más detalles

UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INGENIERÍA TELEMÁTICA. Daniel Díaz Sánchez

UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INGENIERÍA TELEMÁTICA. Daniel Díaz Sánchez UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INGENIERÍA TELEMÁTICA Sockets para servidor Daniel Díaz Sánchez Florina Almenárez Andrés Marín Departamento de Ingeniería Telemática Universidad Carlos

Más detalles

Integración de Toolchain PTXdist sobre IDE gráfico basado en Eclipse

Integración de Toolchain PTXdist sobre IDE gráfico basado en Eclipse Integración de Toolchain PTXdist sobre IDE gráfico basado en Eclipse Objetivos Integrar un toolchain basado en PTXdist sobre un IDE gráfico basado en Eclipse. Creación y compilación de un pequeño proyecto.

Más detalles

Cursosindustriales.net Página 1

Cursosindustriales.net Página 1 Cursosindustriales.net Página 1 CURSO DE VB.NET. PROGRAMACIÓN VISUAL En capítulos anteriores, hemos indicado como Visual Basic.NET declara las variables, las utiliza y las redefine; hemos estudiado el

Más detalles

Práctica 3ProgramacionRS232: Programación básica de la RS232

Práctica 3ProgramacionRS232: Programación básica de la RS232 Práctica 3ProgramacionRS232: Programación básica de la RS232 1 Objetivos El objetivo de esta práctica es la iniciación del alumno en la programación de las comunicaciones en un entorno de desarrollo basado

Más detalles

Código fuente C# Código asociado al formulario Splash

Código fuente C# Código asociado al formulario Splash Código fuente C# Código asociado al formulario Splash using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text;

Más detalles

Introducción a la programación (Java)

Introducción a la programación (Java) Introducción a la programación (Java) Preparar las herramientas de desarrollo Introducción La primera parte de este documento es una guía para la instalación del software necesario para realizar programas

Más detalles

I.- Objetivo. II.- Introducción

I.- Objetivo. II.- Introducción FACULTAD DE INGENIERÍA MECÁNICA Y ELÉCTRICA PROGRAMACIÓN VISUAL Profr. Víctor Castillo PRÁCTICA No. 8 Creación de una conexión de datos usando acceso no conectado con ADO.NET ALUMNO: GRUPO: I.- Objetivo

Más detalles

Aprendiendo a programar aplicaciones gráficas en C++ con Qt5 PRIMEROS PROGRAMAS SENCILLOS

Aprendiendo a programar aplicaciones gráficas en C++ con Qt5 PRIMEROS PROGRAMAS SENCILLOS Aprendiendo a programar aplicaciones gráficas en C++ con Qt5 PRIMEROS PROGRAMAS SENCILLOS Realización de un programa sencillo: pedir un texto y pasarlo a mayúsculas 1) Arrancar QtCreator. Aparecerá una

Más detalles

Kosmo Desktop Manual de desarrollo Instalación y configuración del código fuente de Kosmo en Eclipse

Kosmo Desktop Manual de desarrollo Instalación y configuración del código fuente de Kosmo en Eclipse Kosmo Desktop Manual de desarrollo Instalación y configuración del código fuente de Kosmo en Eclipse Versión 3.0 02/12/2010 2 3 1 Control de versiones VERSIÓN AUTOR FECHA CAMBIO 1.0 SAIG, S.L. 22/03/2007

Más detalles

Ministerio de Educación. Base de datos en la Enseñanza. Open Office. Módulo 3: Controles de formulario

Ministerio de Educación. Base de datos en la Enseñanza. Open Office. Módulo 3: Controles de formulario Ministerio de Educación Base de datos en la Enseñanza. Open Office Módulo 3: Controles de formulario Instituto de Tecnologías Educativas 2011 Controles de formulario El control más habitual de un formulario

Más detalles

Visual Studio Team System 2010

Visual Studio Team System 2010 Visual Studio Team System 2010 5. Pruebas Automatizadas con Visual Studio 6. Pruebas codificadas de interfaz de usuario 7. Pruebas Web de desempeño Identificación de candidatos para la automatización Visual

Más detalles

INTRODUCCIÓN A.NET COMPACT FRAMEWORK 2.0

INTRODUCCIÓN A.NET COMPACT FRAMEWORK 2.0 INTRODUCCIÓN A.NET COMPACT FRAMEWORK 2.0 Derecho de Autor 2007 José Miguel Torres. Permiso para copiar, distribuir y/o modificar este documento bajo los términos de la Licencia de Documentación Libre GNU,

Más detalles

Introducción a Ethernet

Introducción a Ethernet Aplicaciones Prácticas con Sistemas Arduino Introducción a Ethernet CEP SEVILLA IES Los Viveros Curso 2011/2012 Ref: 11412FP23 Luis Modesto González José Pujol Pérez Coordinador: Leopoldo Acal Rodríguez

Más detalles

Desarrollo de un servicio web para el envío de correos utilizando C# y su correspondiente cliente consumidor utilizando Java

Desarrollo de un servicio web para el envío de correos utilizando C# y su correspondiente cliente consumidor utilizando Java Desarrollo de un servicio web para el envío de correos utilizando C# y su correspondiente cliente consumidor utilizando Java Versión 0.1 Jorge Iván Meza Martínez http://www.jorgeivanmeza.com/

Más detalles

Prácticas de programación en C con MinGW Developer Studio

Prácticas de programación en C con MinGW Developer Studio Prácticas de programación en C con MinGW Developer Studio MinGW Developer Studio es un entorno de desarrollo integrado (IDE) para la programación en lenguaje C gratuito y cómodo de usar. Se ejecuta en

Más detalles

Dentro del.net los eventos se utilizan para notificar a nuestros objetos que se ha producido algún tipo de hecho al que nos hemos suscrito.

Dentro del.net los eventos se utilizan para notificar a nuestros objetos que se ha producido algún tipo de hecho al que nos hemos suscrito. Eventos ala.net Recientemente ha surgido en los grupos de C# una duda sobre si los eventos que usa el.net son del mismo tipo que los que nosotros podemos crear y usar. La respuesta obvia y evidente es

Más detalles

Figura1. La IDE de MVS Express 2012

Figura1. La IDE de MVS Express 2012 UNIVERSIDAD DEL ISTMO Ingeniería en computación Compiladores PROFESOR M. en C. J. Jesús Arellano Pimentel NÚMERO DE PRÁCTICA 1 NOMBRE DE LA PRÁCTICA OBJETIVO GENERAL OBJETIVOS ESPECÍFICOS EQUIPO REQUERIDO

Más detalles

Manual de NetBeans y XAMPP

Manual de NetBeans y XAMPP Three Headed Monkey Manual de NetBeans y XAMPP Versión 1.0 Guillermo Montoro Delgado Raúl Nadal Burgos Juan María Ruiz Tinas Lunes, 22 de marzo de 2010 Contenido NetBeans... 2 Qué es NetBeans?... 2 Instalación

Más detalles

Video 2: Cómo Crear una plantilla para Generar Procedimientos Almacenados

Video 2: Cómo Crear una plantilla para Generar Procedimientos Almacenados Video 2: Cómo Crear una plantilla para Generar Procedimientos Almacenados A continuación se detallará paso a paso el proceso para generar Procedimientos Almacenados (SQL Stored Procedures) con Amonsys

Más detalles

Mi primer proyecto en Dev-C++

Mi primer proyecto en Dev-C++ Mi primer proyecto en Dev-C++ Para realizar esta actividad deberás disponer de un ordenador en el que esté instalado el Dev-C++. Debes ir realizando cada uno de los pasos indicados, en el mismo orden en

Más detalles

CURSO INTERMEDIO DE PROGRAMACIÓN EN ANDROID

CURSO INTERMEDIO DE PROGRAMACIÓN EN ANDROID CURSO INTERMEDIO DE PROGRAMACIÓN EN ANDROID 1. Entorno de desarrollo y primera aplicación 1. El mundo Android 1.1 Android y las versiones 1.2 Personalizaciones del sistema operativo. 1.3 Dispositivos Android

Más detalles

Un poco de culturilla...1 Crear un servicio Web...1 Usar servicios web...6

Un poco de culturilla...1 Crear un servicio Web...1 Usar servicios web...6 Servicios web Índice de contenido Un poco de culturilla...1 Crear un servicio Web...1 Usar servicios web...6 Un poco de culturilla La alta conectividad entre ordenadores ha sido una meta desde que comenzó

Más detalles

Guía I Preparar SQL Server con BBDD de ejemplo

Guía I Preparar SQL Server con BBDD de ejemplo Guía I Preparar SQL Server con BBDD de ejemplo Índice 1 Introducción...2 2 Instalar SQL Server Management Studio Express...2 3 Incluir la base de datos NorthwindCS...8 Datos de conexión a nuestro servidor...9

Más detalles

ADO.NET con Base de datos SQL Server

ADO.NET con Base de datos SQL Server ADO.NET con Base de datos SQL Server 1. Modelo de objetos ADO.NET ADO.NET es un conjunto de librerías orientadas a objetos que permiten inteactuar con el origen de datos (data source). El origen de datos

Más detalles

Fuente: http://www.kzgunea.net

Fuente: http://www.kzgunea.net APRENDE A NAVEGAR INTERNET EXPLORER El navegador Internet Explorer ya lo tenemos integrado en el Sistema Operativo, en sus diferentes versiones desde Windows 95, por lo cual no tendremos que instalarlo.

Más detalles

Día 2: Utilizando controles de datos en Visual Studio 2008.

Día 2: Utilizando controles de datos en Visual Studio 2008. Día 2: Utilizando controles de datos en Visual Studio 2008. Requerimientos de este laboratorio: Base de datos creada en el laboratorio 1 en SQL SERVER. Visual Studio 2008 *Nota: Si usted cuenta con el

Más detalles

Configuración de cliente de correo

Configuración de cliente de correo Configuración de cliente de correo CiTEC 2011 Configuración de cliente de correo POP Outlook 2007 Outlook 2003 Outlook Express Apple Mail 4 Windows Mail Thunderbird 3 Configuración de otros clientes de

Más detalles

1.1. Instalación del entorno de desarrollo

1.1. Instalación del entorno de desarrollo 1.1. Instalación del entorno de desarrollo Para el desarrollo de las aplicaciones vamos a poder utilizar un potente y moderno entorno de desarrollo. Al igual que Android, todas las herramientas están basadas

Más detalles

DreamWeaver. CS5 y CS6. Cursosindustriales. Curso de DreamWeaver CS6 1

DreamWeaver. CS5 y CS6. Cursosindustriales. Curso de DreamWeaver CS6 1 DreamWeaver CS5 y CS6 Cursosindustriales. Curso de DreamWeaver CS6 1 DREAMWEAVER CS5. DISEÑO DE PÁGINAS DINÁMICAS. En esta segunda sección de diseño de páginas Web con Dreamweaver CS, vamos a hablar sobre

Más detalles

Pruebas de unidad con JUnit

Pruebas de unidad con JUnit Pruebas de unidad con JUnit Cuando se implementa software, resulta recomendable comprobar que el código que hemos escrito funciona correctamente. Para ello, implementamos pruebas que verifican que nuestro

Más detalles

Nuevas Tecnologías Aplicadas a la Educación Taller Práctica 1 Primeros pasos con WYSIWYG Web Builder

Nuevas Tecnologías Aplicadas a la Educación Taller Práctica 1 Primeros pasos con WYSIWYG Web Builder Nuevas Tecnologías Aplicadas a la Educación Taller Práctica 1 Primeros pasos con WYSIWYG Web Builder 1. Preparativos Antes de empezar con la práctica, vamos a crear una carpeta donde guardar la web creada.

Más detalles

UNIDAD DIDACTICA 5 CONFIGURACIÓN DEL SERVICIO DNS EN WINDOWS 2003. Eduard Lara

UNIDAD DIDACTICA 5 CONFIGURACIÓN DEL SERVICIO DNS EN WINDOWS 2003. Eduard Lara UNIDAD DIDACTICA 5 CONFIGURACIÓN DEL SERVICIO DNS EN WINDOWS 2003 Eduard Lara 1 1. DOMAIN NAME SYSTEM El sistema de nombres de dominio (DNS) es una base de datos distribuida y jerárquica que almacena información

Más detalles

Herramienta CASE (Bouml)

Herramienta CASE (Bouml) Herramienta CASE (Bouml) Ingeniería de la Programación Práctica 6 1 Contenido La presentación es una traducción, con alguna pequeña aportación, del tutorial sobre Bouml que puede encontrarse en inglés

Más detalles

Aplicar técnicas de encriptamiento con el fin de comprender su funcionamiento.

Aplicar técnicas de encriptamiento con el fin de comprender su funcionamiento. Programación III, Guía 10 1 Facultad : Ingeniería Escuela : Computación Asignatura: Programación III Tema: ENCRIPTACIÓN. Objetivo Aplicar técnicas de encriptamiento con el fin de comprender su funcionamiento.

Más detalles

1: La plataforma.net (.NET Framework)

1: La plataforma.net (.NET Framework) Programació amb C#.NET Jordi Linares i Pellicer 1: La plataforma.net (.NET Framework) Índice! Introducción! Características de.net! Componentes.NET! Plataforma.NET! Ejemplo Introducción! Microsoft.NET

Más detalles

Ejercicios - Persistencia en Android: ficheros y SQLite

Ejercicios - Persistencia en Android: ficheros y SQLite Ejercicios - Persistencia en Android: ficheros y SQLite Índice 1 Uso de ficheros (0.5 puntos)...2 2 Persistencia con ficheros (0.5 puntos)...3 3 Base de datos: SQLiteOpenHelper (0.5 puntos)... 3 4 Base

Más detalles

Microsoft Outlook Express

Microsoft Outlook Express Microsoft Outlook Express Para configurar Microsoft Outlook Express para recibir email, siga los siguientes pasos: Abra Outlook Express, click en herramientas y seleccione Cuentas. El siguiente grafico

Más detalles

Redes Locales: El protocolo TCP/IP

Redes Locales: El protocolo TCP/IP Redes Locales: El protocolo TCP/IP Los protocolos de red son las reglas que siguen los equipos conectados a la red para poder comunicarse entre sí, y hablar así el mismo idioma. El grupo de protocolos

Más detalles

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO INTRODUCCIÓN Objetivo del curso: El alumno desarrollará la capacidad para resolver problemas de almacenamiento, recuperación y ordenamiento de datos, utilizando las diferentes estructuras que existen para

Más detalles

Carlos Castro Grande 1

Carlos Castro Grande 1 QUÉ ES VISUAL BASIC.NET? GUIA DE LABORATORIO I TALLER DE DESARROLLO I VB.NET 2012 Es un lenguaje de programación de alto nivel orientado a objetos y eventos que soporta encapsulación, herencia y polimorfismo.

Más detalles

Guía de instalación del software de la asignatura

Guía de instalación del software de la asignatura Guía de instalación del software de la asignatura Eclipse + Android SDK 1. La forma más sencilla de instalar Eclipse con el plugin ADT para desarrollo de aplicaciones Android es descargar el paquete preconfigurado

Más detalles

Conociendo el ambiente de programación de Java. M. en C. Erika Vilches

Conociendo el ambiente de programación de Java. M. en C. Erika Vilches Conociendo el ambiente de programación de Java M. en C. Erika Vilches La variable PATH Una vez que se ha aceptado la licencia del JDK y que se ha instalado satisfactoriamente y antes de poder utilizarlo,

Más detalles

RUEDA TORRES DULCE CAROLINA 3CM2 JSF JAVA SERVER FACES WEB APPLICATION DEVELOPMENT

RUEDA TORRES DULCE CAROLINA 3CM2 JSF JAVA SERVER FACES WEB APPLICATION DEVELOPMENT 3CM2 JSF JAVA SERVER FACES WEB APPLICATION DEVELOPMENT JavaServer Faces (JSF) es una interfaz de usuario (UI) para las aplicaciones web Java. Está diseñado para aliviar considerablemente la carga de la

Más detalles

1. El entorno de desarrollo Eclipse

1. El entorno de desarrollo Eclipse Índice 1. El entorno de desarrollo Eclipse 1 1.1. Qué es Eclipse?........................................................ 1 1.2. Trabajando con Eclipse....................................................

Más detalles

UNIVERSIDAD POLITÉCNICA DE PACHUCA SOCKETS EN JAVA

UNIVERSIDAD POLITÉCNICA DE PACHUCA SOCKETS EN JAVA SOCKETS EN JAVA Los sockets son puntos finales de enlaces de comunicaciones entre procesos. Los procesos los tratan como descriptores de ficheros, de forma que se pueden intercambiar datos con otros procesos

Más detalles

Preguntas frecuentes CD-ROM

Preguntas frecuentes CD-ROM Preguntas frecuentes CD-ROM La gran mayoría de problemas de instalación del CD-ROM pueden resolverse con un test de diagnóstico con el mismo CD-ROM, clickando en la indicación del menú principal Requisitos

Más detalles

Copias de Seguridad con SQL Server 2005. Realizar una copia de seguridad de Bases de Datos

Copias de Seguridad con SQL Server 2005. Realizar una copia de seguridad de Bases de Datos Propósito Copias de Seguridad con SQL Server 2005 Con Management Studio del SQL 2005 es posible crear copias de seguridad de las bases de Datos definidas en el servidor de SQL Server. Dicha copia de seguridad

Más detalles

El lenguaje de programación Java

El lenguaje de programación Java Departament d Arquitectura de Computadors El lenguaje de programación Java Java (I) Orientado a objetos Ejecutado por una maquina virtual Independiente de la plataforma Multithreaded Orientado a la red

Más detalles

Temas de esta unidad :

Temas de esta unidad : Temas de esta unidad : Creación de Controles Web Personalizados Validación de entradas de usuarios Creación, lectura y escritura de archivos de texto Conceptos - Creacion de Controles Web Personalizados

Más detalles

Instalar protocolo, cliente o servicio nuevo. Seleccionar ubicación de red. Práctica - Compartir y conectar una carpeta

Instalar protocolo, cliente o servicio nuevo. Seleccionar ubicación de red. Práctica - Compartir y conectar una carpeta Configuración de una red con Windows Aunque existen múltiples sistemas operativos, el más utilizado en todo el mundo sigue siendo Windows de Microsoft. Por este motivo, vamos a aprender los pasos para

Más detalles