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 [Link].*;
import [Link];
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([Link]);
try
//Flujo de datos hacia el servidor
DataInputStream entrada;
entrada = new DataInputStream([Link]());
salidaServidor = new DataOutputStream([Link]());
String cuenta = "";
String accion = "";
String valor = "";
String mensaje = "";
String mensajeRecibido;
[Link]("En cualquier momento escriba ff para salir del aplicativo");
while( ||  || ){
[Link]("Escriba i para ingresar a una cuenta, o escriba c para consultar");
accion = [Link]();
if([Link]("i")) {
[Link]("Escriba el numero de la cuenta");
cuenta = [Link]();
[Link]("Escriba el valor a ingresar");
valor = [Link]();
mensaje = accion+","+cuenta+","+valor;
if([Link]("c")) {
[Link]("Escriba el numero de la cuenta");
cuenta = [Link]();
mensaje = accion+","+cuenta;
[Link](mensaje);//enviamos mensaje
mensajeRecibido = [Link]();//Leemos respuesta
[Link](mensajeRecibido);
[Link]();//Fin de la conexión
catch (Exception e)
[Link]([Link]());
Servidor
import [Link].*;
import [Link].*;
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/[Link]"";
//Esperando conexión
[Link]("Esperando...");
//Accept comienza el socket y espera una conexión desde un cliente
cs = [Link]();
[Link]("Cliente en línea");
//Se obtiene el flujo de salida del cliente para enviarle mensajes
salidaCliente = new DataOutputStream([Link]());
DataInputStream entrada;
String mensajeRecibido;
entrada = new DataInputStream([Link]());
//Leemos respuesta
mensajeRecibido = [Link]();
// Divide el mensaje si tiene ,
String data[] = [Link](",");
String accion = data[0];
String cuenta = data[1];
// Acción es ingresar
if([Link]("i")) {
int valor = [Link](data[2]);
int cuentaInt = [Link](cuenta);
FileWriter fichero = null;
PrintWriter pw = null;
try
fichero = new FileWriter(ruta,true);
pw = new PrintWriter(fichero);
String salida = cuentaInt+" "+valor;
[Link](salida);
[Link]("OK");
} catch (Exception e) {
[Link]("NO-OK");
[Link]();
} finally {
try {
// Nuevamente aprovechamos el finally para
// asegurarnos que se cierra el fichero.
if (null != fichero)
[Link]();
} catch (Exception e2) {
[Link]();
}
}
// Acción Consultar
if([Link]("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=[Link]())!=null) {
String salida[] = [Link](" ");
String cUsuario = salida[0];
int saldo = [Link](salida[1]);
if([Link](cUsuario)){
//[Link](cuenta+" "+saldo);
[Link]("Saldo del usuario "+saldo);
//[Link]([Link](salida));
}
[Link]("Fin de la conexión");
[Link]();//Se finaliza la conexión con el cliente
catch (Exception e)
[Link]([Link]());
Conexión
import [Link];
import [Link];
import [Link];
import [Link];
public class Conexion
private final int PUERTO = 1245; //Puerto para la conexión
private final String HOST = "[Link]" //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([Link](“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 [Link];
//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
[Link]("Iniciando cliente\n");
[Link](); //Se inicia el cliente
MAIN SERVIDOR
import [Link];
//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
[Link]("Iniciando servidor\n");
[Link](); //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 [Link]
Lenguajes y ciencias de la computación. Disponible en
[Link]