====== Comunicación Entre Procesos ====== ===== Conceptos básicos ===== Es necesario un protocolo que establecerá quien es el emisor y quien el receptor Tipos de comunicación: * Unicast: De un proceso a otro, una sola comunicación * Multicast: desde un proceso a varios Operaciones primitivas básicas: * Enviar * Recibir * Conectar: Inicia proceso de solicitar conexión y otro de aceptar conexión * Desconectar: Finaliza el proceso anterior Los extremos de comunicación son independientes. Tienen que haber funciones que eviten que se bloquee infinitamente nuestro programa al hacer una petición a un servidor. Las soluciones son TimeOut y esto debe estar en un hilo para que no se tumbe el proceso principal. Las operaciones pueden ser síncronas(bloqueantes) o asíncronas(no bloqueantes). Escenarios de comunicación * Enviar Síncrono y recibir asíncrono * Caso 2: El emisor se puede quedar bloqueado indefinidamente a menos que haya un timeout o sea en un Hilo. * Caso 3: El sistema debe tener un mecanismo que informe de que los datos han llegado (CallBack). * Enviar asíncrono y recibir asíncrono ===== Temporizadores: ===== * El bloqueo permite la sincronización pero es inaceptable bloquear el proceso * Como medida se usan temporizadores. ===== Representación de los datos ===== * Las aplicaciones utilizan estructuras de datos para representar la información. * El emisor y receptor pueden ser diferentes y utilizar codificaciones diferentes * Tenemos 3 soluciones: * Convertir en origen * Convertir en destino * Utilizar representación externa * Se suele hacer lo siguiente: * Aplanado de datos en un extremo: Marshaling * Transmisión de los datos * Reconstrucción de los datos en el otro extremo: Unmarshaling