Entrega 1 Sistemas Distribuidos MD

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 22

SISTEMAS DISTRIBUIDOS

Entrega 1 Semana 3
Grupo No. 12

Carlos Ariel Aranda Martínez Cod: 1911020100

Janeth Astrid Muñoz Álvarez Cod:

José Daniel Giraldo Parra Cod:

Ana Milena Diaz Carvajal Cod: 812011645


José Luis Duarte Mesa Cod: 1520010205

John Aníbal Martin Aguilera Cod: 1911027636

Tatiana Geraldine Gil Toro Cod:100231326

Lady Yolima Galindo Serrano Cod: 1821022661

Jorge Rodríguez vela Cod: 100031551

Estefanía Valbuena Rincón Cod: 1821020963

Docente: Silva Monsalve Alexandra María

Politécnico Gran Colombiano.


Facultad de Ingeniería, Diseño e Innovación Escuela de Ciencias Básicas.
Bogotá 2022
INTRODUCCIÓN

Los sistemas operativos son programas que permite administrar el hardware y el


software en un equipo de cómputo, estos sistemas distribuidos poseen unas enormes
ventajas con respeto a los sistemas centralizados y computadoras aliadas donde se
comunican sistematizan sus acciones mediante las transferencias de datos.

En este documento como grupo describimos los pasos a seguir para la instalación y
configuración de un sistema operativo Linux dentro de una máquina virtual. Para esto
usaremos VirtualBox como herramienta de virtualización, y Windows como sistema
base que será dominado por host y CentOS como sistema operativo de máquinas
virtuales.
ENTREGA 1 SEMANA 3

1. Instalación de la máquina virtual con el sistema operativo


2. Estado del arte de socket:

Los sockets son mecanismos de comunicación entre procesos que permiten que un
proceso hable con otro proceso estando en distintas maquinas es necesario para
establecer una infraestructura del cliente servidor, desde el punto de vista de
programacion un socket no es más que un fichero que se abre de una manera especial
3. Tipos de sockets

Tenemos dos tipos de sockets stream esta orientado a la conexión y el datagrama es


no orientado a conexión y data está orientado al protocolo UDP que no garantiza que
los paquetes de data lleguen, pero es más rápido, para realizar la creación de los
sockets debemos tener encuentra el protocolo y de que lado se encuentra

4. Cliente-servidor

Ya definimos que los sockets son una piedra angular necesaria para la conexión a
través de una red de datos y así transmitir la información requerida, por lo tanto, en
estos casos para simplificar las conexiones se crearon drivers o conjuntos de utilizades
y /o herramientas que simplifican la tarea de creación de estos sockets.

Las propiedades de un socket dependen de las características del protocolo en el que


se implementan. Generalmente la comunicación con sockets se realiza mediante un
protocolo de la familia TCP/IP (Protocolo de Control de Transmisión/Protocolo de
Internet). Los dos más utilizados son: TCP (Protocolo de Control de Transmisión) y
UDP (Protocolo de Datagrama de Usuario)

Cuando se implementan con el protocolo TCP, los sockets tienen las siguientes
propiedades:

 Orientado a conexión.
 Se garantiza la transmisión de todos los octetos sin errores ni omisiones.
 Se garantiza que todo octeto llegará a su destino en el mismo orden en que se
ha transmitido. Estas propiedades son muy importantes para garantizar la
corrección de los programas que tratan la información.
y en día teniendo en cuenta la globalización en los ámbitos sociales, culturales,
económicos,
tecnológicos, políticos y demás, se podrá corroborar que la transaccionalidad de
datos e
información es contante en todos estos campos, un gran ejemplo de todo esto lo vemos
a diario
con las millones de transferencias bancarias que se hacen a nivel mundial en donde
por una red
se controlan y manejan exorbitantes sumas de dinero producto de las
innumerables
negociaciones y/o transacciones monetarias que surgen día a día. Para esto es
necesario
comprender que “la transferencia de archivos en un entorno de red implica un
conjunto de
reglas y procedimientos para que se “entiendan” las partes implicadas en la
transferencia y se
pueda realizar el envío de manera satisfactoria.” (de Dios Murillo Morera, 2010).
Para el caso particular en donde debemos como grupo diseñar un sistema que permita
realizar
operaciones financieras como lo son una consulta de saldo, un retiro y una
consignación, es
necesario llevarlo a cabo teniendo en cuenta los requerimientos funcionales dentro de
este tipo
de operaciones; cuando hacemos alguna de estas operaciones lo más importante es la
seguridad
de la transacción, es por esto que todas las páginas que nos permiten realizarlas
cuentan con el
certificado SSL Secure Sockets Layer (capa de sockets seguros) que brinda al
usuario la
confianza y seguridad para la realización de transacciones, “El protocolo Security
Socket Layer
elimina las amenazas al crear un canal cifrado para comunicaciones privadas, aunque
se valga
de una red pública como Internet.” (Colombia, 2018)
Aquí es donde el tema de socket muestra su importante funcionamiento, dentro del
proceso de
recolección de información se encontraron diferentes tipos de sockets y cada
uno tiene su
respectiva especificación.
oy en día teniendo en cuenta la globalización en los ámbitos sociales, culturales,
económicos,
tecnológicos, políticos y demás, se podrá corroborar que la transaccionalidad de
datos e
información es contante en todos estos campos, un gran ejemplo de todo esto lo vemos
a diario
con las millones de transferencias bancarias que se hacen a nivel mundial en donde
por una red
se controlan y manejan exorbitantes sumas de dinero producto de las
innumerables
negociaciones y/o transacciones monetarias que surgen día a día. Para esto es
necesario
comprender que “la transferencia de archivos en un entorno de red implica un
conjunto de
reglas y procedimientos para que se “entiendan” las partes implicadas en la
transferencia y se
pueda realizar el envío de manera satisfactoria.” (de Dios Murillo Morera, 2010).
Para el caso particular en donde debemos como grupo diseñar un sistema que permita
realizar
operaciones financieras como lo son una consulta de saldo, un retiro y una
consignación, es
necesario llevarlo a cabo teniendo en cuenta los requerimientos funcionales dentro de
este tipo
de operaciones; cuando hacemos alguna de estas operaciones lo más importante es la
seguridad
de la transacción, es por esto que todas las páginas que nos permiten realizarlas
cuentan con el
certificado SSL Secure Sockets Layer (capa de sockets seguros) que brinda al
usuario la
confianza y seguridad para la realización de transacciones, “El protocolo Security
Socket Layer
elimina las amenazas al crear un canal cifrado para comunicaciones privadas, aunque
se valga
de una red pública como Internet.” (Colombia, 2018)
Aquí es donde el tema de socket muestra su importante funcionamiento, dentro del
proceso de
recolección de información se encontraron diferentes tipos de sockets y cada
uno tiene su
respectiva especificación

oy en día teniendo en cuenta la


globalización en los ámbitos
sociales, culturales,
económicos,
tecnológicos, políticos y
demás, se podrá corroborar
que la transaccionalidad de
datos e
información es contante en
todos estos campos, un gran
ejemplo de todo esto lo vemos a
diario
con las millones de
transferencias bancarias que se
hacen a nivel mundial en donde
por una red
se controlan y manejan
exorbitantes sumas de dinero
producto de las innumerables
negociaciones y/o
transacciones monetarias que
surgen día a día. Para esto
es necesario
comprender que “la
transferencia de archivos en un
entorno de red implica un
conjunto de
reglas y procedimientos para
que se “entiendan” las partes
implicadas en la transferencia y
se
pueda realizar el envío de
manera satisfactoria.” (de Dios
Murillo Morera, 2010).
Para el caso particular en donde
debemos como grupo diseñar un
sistema que permita realizar
operaciones financieras como lo
son una consulta de saldo, un
retiro y una consignación, es
necesario llevarlo a cabo
teniendo en cuenta los
requerimientos funcionales
dentro de este tipo
de operaciones; cuando
hacemos alguna de estas
operaciones lo más importante
es la seguridad
de la transacción, es por esto
que todas las páginas que nos
permiten realizarlas cuentan con
el
certificado SSL Secure
Sockets Layer (capa de
sockets seguros) que brinda
al usuario la
confianza y seguridad para la
realización de transacciones,
“El protocolo Security Socket
Layer
elimina las amenazas al crear un
canal cifrado para
comunicaciones privadas,
aunque se valga
de una red pública como
Internet.” (Colombia, 2018)
Aquí es donde el tema de
socket muestra su importante
funcionamiento, dentro del
proceso de
recolección de información se
encontraron diferentes tipos
de sockets y cada uno tiene
su
respectiva especificación
5. Desarrollo del código java

CLIENTE:
import java.io.*;

import java.util.Scanner;

public class Cliente extends Conexion

public Cliente() throws IOException{super("cliente");} //Se usa el constructor para cliente de Conexion

public void startClient() //Método para iniciar el cliente

Scanner teclado = new Scanner(System.in);

try

//Flujo de datos hacia el servidor

DataInputStream entrada;

entrada = new DataInputStream(cs.getInputStream());

salidaServidor = new DataOutputStream(cs.getOutputStream());

String cuenta = "";

String accion = "";

String valor = "";

String mensaje = "";

String mensajeRecibido;

System.out.println("En cualquier momento escriba ff para salir del aplicativo");

while(!accion.equals("ff") || !cuenta.equals("ff") || !valor.equals("ff")){

System.out.println("Escriba i para ingresar a una cuenta, o escriba c para consultar");


accion = teclado.nextLine();

if(accion.equals("i")) {

System.out.println("Escriba el numero de la cuenta");

cuenta = teclado.nextLine();

System.out.println("Escriba el valor a ingresar");

valor = teclado.nextLine();

mensaje = accion+","+cuenta+","+valor;

if(accion.equals("c")) {

System.out.println("Escriba el numero de la cuenta");

cuenta = teclado.nextLine();

mensaje = accion+","+cuenta;

salidaServidor.writeUTF(mensaje);//enviamos mensaje

mensajeRecibido = entrada.readUTF();//Leemos respuesta

System.out.println(mensajeRecibido);

cs.close();//Fin de la conexión

catch (Exception e)

System.out.println(e.getMessage());

Servidor
import java.io.*;

import java.util.*;
public class Servidor extends Conexion //Se hereda de conexión para hacer uso de los sockets y demás

public Servidor() throws IOException{super("servidor");} //Se usa el constructor para servidor de Conexion

public void startServer()//Método para iniciar el servidor

try

String ruta = " "/home/ubuntu/eclipse-workspace/Socket_Servidor/src/datos.txt"";

//Esperando conexión

System.out.println("Esperando...");

//Accept comienza el socket y espera una conexión desde un cliente

cs = ss.accept();

System.out.println("Cliente en línea");

//Se obtiene el flujo de salida del cliente para enviarle mensajes

salidaCliente = new DataOutputStream(cs.getOutputStream());

DataInputStream entrada;

String mensajeRecibido;

entrada = new DataInputStream(cs.getInputStream());

//Leemos respuesta

mensajeRecibido = entrada.readUTF();

// Divide el mensaje si tiene ,

String data[] = mensajeRecibido.split(",");

String accion = data[0];

String cuenta = data[1];


// Acción es ingresar

if(accion.equals("i")) {

int valor = Integer.parseInt(data[2]);

int cuentaInt = Integer.parseInt(cuenta);

FileWriter fichero = null;

PrintWriter pw = null;

try

fichero = new FileWriter(ruta,true);

pw = new PrintWriter(fichero);

String salida = cuentaInt+" "+valor;

pw.println(salida);

salidaCliente.writeUTF("OK");

} catch (Exception e) {

salidaCliente.writeUTF("NO-OK");

e.printStackTrace();

} finally {

try {

// Nuevamente aprovechamos el finally para

// asegurarnos que se cierra el fichero.

if (null != fichero)

fichero.close();

} catch (Exception e2) {

e2.printStackTrace();

}
}

// Acción Consultar

if(accion.equals("c")) {

// Lectura del fichero

File archivo = null;

FileReader fr = null;

BufferedReader br = null;

archivo = new File (ruta);

fr = new FileReader (archivo);

br = new BufferedReader(fr);

String linea;

// Lee linea a linea el archivo para buscar el saldo

while((linea=br.readLine())!=null) {

String salida[] = linea.split(" ");

String cUsuario = salida[0];

int saldo = Integer.parseInt(salida[1]);

if(cuenta.equals(cUsuario)){

//System.out.println(cuenta+" "+saldo);

salidaCliente.writeUTF("Saldo del usuario "+saldo);

//System.out.println(Arrays.toString(salida));

}
System.out.println("Fin de la conexión");

ss.close();//Se finaliza la conexión con el cliente

catch (Exception e)

System.out.println(e.getMessage());

Conexión
import java.io.DataOutputStream;

import java.io.IOException;

import java.net.ServerSocket;

import java.net.Socket;

public class Conexion

private final int PUERTO = 1245; //Puerto para la conexión

private final String HOST = "192.168.1.169" //Host para la conexión

protected String mensajeServidor; //Mensajes entrantes (recibidos) en el servidor

protected ServerSocket ss; //Socket del servidor

protected Socket cs; //Socket del cliente

protected DataOutputStream salidaServidor, salidaCliente; //Flujo de datos de salida

public Conexion(String tipo) throws IOException //Constructor

if(tipo.equalsIgnoreCase(“servidor”))

{
ss = new ServerSocket(PUERTO);//Se crea el socket para el servidor en puerto 1234

cs = new Socket(); //Socket para el cliente

else

cs = new Socket(HOST, PUERTO); //Socket para el cliente en localhost en puerto 1234

MAIN CLIENTE
import java.io.IOException;

//Clase principal que hará uso del cliente

public class MainCliente

public static void main(String[] args) throws IOException

Cliente cli = new Cliente(); //Se crea el cliente

System.out.println("Iniciando cliente\n");

cli.startClient(); //Se inicia el cliente

MAIN SERVIDOR
import java.io.IOException;

//Clase principal que hará uso del servidor


public class MainServidor

public static void main(String[] args) throws IOException

Servidor serv = new Servidor(); //Se crea el servidor

System.out.println("Iniciando servidor\n");

serv.startServer(); //Se inicia el servidor

6. Link del video

7. Conclusiones

En esta actividad como grupo nos ha permitido conocer las partes esenciales de un
sistema operativo como son las máquinas virtuales y configuración de las mismas, para
esta implantación del modelo cliente-servidor fue necesario la instalación MV donde se
ejecutó el código en java utilizando el método socket.

8. BIBLIOGRAFÍA
 Socket. Disponible en https://www.ecured.cu/Socket
 Lenguajes y ciencias de la computación. Disponible en
http://www.lcc.uma.es/~eat/services/i_socket/i_socket.html#link2

También podría gustarte