La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Conceptos Básicos de Programación

Presentaciones similares


Presentación del tema: "Conceptos Básicos de Programación"— Transcripción de la presentación:

1 Conceptos Básicos de Programación
RoboSim Conceptos Básicos de Programación

2 Tecnologías en Robosim
Comunicaciones TCP-IP Necesitamos utilizar las librerías de comunicaciones y cadenas alfanuméricas. Programación distribuida Necesitamos utilizar objetos de sincronismo y librerías para la gestión de threads. Inteligencia Artificial Necesitamos utilizar estructuras de datos y variables dinámicas.

3 Comunicaciones Las tecnologias de comunicaciones entre ordenadores se diseñan mediante una arquitectura de capas OSI (ver wikipedia modelo osi). Lo que nos interesa: una capa o tecnología pone a nuestra disposición unos servicios (herramientas) para permitir la comunicación que usa todos los recursos de las capas inferiores. Así pues, si utilizamos el nivel osi de transporte no tenemos que ocuparnos ni del nivel físico, ni del enlace …

4 Nuestra Elección: Sockets
Nuestro nivel o tecnología de comunicaciones será los sockets, en concreto, los stream sockets (ver sockets de Internet). Nuestros sockets está basados en TCP-IP (capa de transporte). Lo que nos permiten: Comunicar 2 programas en ordenadores distintos identificados mediante: el IP del ordenador y un número (que llamaremos puerto). Mediante una sesión (es decir, hay un proceso de establecimiento de la comunicación antes de que esta se produzca, a este proceso le llamaremos establecimiento de la sesión). Garantizando la recepción correcta de toda la información (no en UDP, pero este no es nuestro caso). Lo que transmitimos son “octetos”.

5 Librerías de Sockets Todos los sistemas tienen alguna librería con funciones similares para la implementación de la idea de socket (buscar socket y el lenguaje o entorno utilizado). En concreto tendremos: Funciones (métodos, interfaces, …) para establecer la comunicación (crear el socket, buscar el programa con el que queremos comunicarnos, etc). Funciones para trasmitir información, una para emitir información y otra para recibir información.

6 Establecimiento de Sesión
Existen 2 posibilidades: ser servidor (esperar a que alguien se conecte) o ser cliente (ir a buscar un sitio al que conectarse, es decir, un servidor). Se realiza mediante una secuencia establecida de llamadas a funciones (una secuencia es propia del servidor y otra del cliente). No es necesario un conocimiento exhaustivo de lo que hace cada función, es más práctico buscar un ejemplo hecho y adaptarlo a nuestras necesidades).

7 Establecimiento de Sesión de Servidor en C
El establecimiento consta de los siguientes pasos. socket Inicializa una struct con la información del socket bind Reserva números de socket listen Espera conexiones entrantes accept Acepta conexiones entrantes Cada una de las funciones tiene los parámetros correspondientes y devuelve -1 si la operación falla.

8 Establecimiento de Sesión de Cliente en C
El establecimiento consta de: socket Crea el socket para su uso posterior connect Conecta el socket al servidor (se tiene que corresponder con accept) Cada función tiene los correspondientes parámetros y devuelve -1 si falla.

9 Enviar y Recibir información
Se hace a través de 2 funciones: read (o recv) recibe la información escrita en el socket. write (o send) envía información a través del socket. Tienen como parámetro el socket y un buffer. Devuelven el número de bytes trasmitidos (incluido 0 bytes transmitidos) y -1 si hay un error.

10 Cadenas Alfanuméricas
Son el buffer de las funciones de transmisión de información. Básicamente es un array de letras. En C: char[LongMax]. Las comunicaciones mediante sockets se basan en la transmisión de cadenas alfanuméricas de longitud predeterminada. Ojo, hay que distinguir estas cadenas de la cadena terminada en null (null terminating string). El sistema de comunicaciones de Robosim transmite los números que son necesarios en un solo byte. De esta forma se pueden convertir cómodamente a un char sin pensar en el sistema en el que estemos (distintas codificaciones de números enteros: endianness). Robosim no utiliza número reales.

11 Consideraciones sobre buffers de char en C
Si una función tiene como parámetro un char*, lo más probable es que requiera un buffer (o una cadena alfanumérica). Se puede comprobar porque generalmente (¡¡No siempre!!) la función lleva un parámetro más que nos indica la capacidad máxima del buffer. Un buffer se declara, por ejemplo, como: char buffer[512]; Un buffer debe tener suficiente espacio para almacenar la información y un char más (el null del final). El tipo del buffer es, a la vez, char* y char[]. ¡¡Nunca debes asignar un buffer!! En su lugar usa strcpy, pero antes asegúrate que acaba en null. Las funciones de trasmisión de datos en los sockets NO usan null terminating strings sino buffers definidos mediante el número de bytes. Las funciones que trabajan con cadenas en C, es al revés, siempre usan null terminating strings. Para convertir: buffer[longitud] = 0; y (buffer,strlen(buffer))


Descargar ppt "Conceptos Básicos de Programación"

Presentaciones similares


Anuncios Google