Está en la página 1de 37

PERSISTENCIA Y DATOS TRANSACCIONALES

LADY YOLIMA GALINDO SERRANO


COD 1821022661
MAURICIO FERNANDO RODRIGUEZ GIRALDO
COD 1811023065
BRAYAM YUNAIS GOMEZ HUSBANDS
COD 2011022522
GABRIEL MARTINEZ SANDINO
COD 1811020069
SANDRA MILENA BOLÍVAR CÁRDENAS
COD 1621022496

INSTITUCIÓN UNIVERSITARIA POLITÉCNICO GRANCOLOMBIANO


FACULTAD DE INGENIERÍA

INGENIERÍA DE SOFTWARE

BOGOTÁ
2020
PERSISTENCIA Y DATOS TRANSACCIONALES

LADY YOLIMA GALINDO SERRANO


MAURICIO FERNANDO RODRIGUEZ GIRALDO
BRAYAM YUNAIS GOMEZ HUSBANDS
GABRIEL MARTINEZ SANDINO
SANDRA MILENA BOLÍVAR CÁRDENAS

Primer Entrega Proyecto


‘BANCO XYZ’

Tutor:
ALEXIS ROJAS CORDERO

INSTITUCIÓN UNIVERSITARIA POLITÉCNICO GRANCOLOMBIANO


FACULTAD DE INGENIERÍA

INGENIERÍA DE SOFTWARE

BOGOTÁ
2020
CONTENIDO

Pág.

1. INTRODUCCIÓN

2. OBJETIVOS

3. DESCRIPCIÓN DEL PROBLEMA

4. MODELO ENTIDAD RELACIÓN

5. PROCESO DE IMPLATANCIÓN EN BASE DE DATOS

6. ESTADO DEL ARTE DE CONSTRUCCIÓN DE UN SOCKET

7. CONCLUSIONES

8. BIBLIOGRAFÍA
1. INTRODUCCIÓN

En este trabajo se ha desarrollado un prototipo transaccional que permite simular

la ejecución de tres transacciones en las que se puedan hacer, una consulta de

saldo, una consignación, y un retiro, para ello se ha elaborado un modelo entidad

relación que permite ejecutar los requerimientos que se desean tener, en las

cuales se tendrán en cuenta las entidades de Banco, Cliente, Cuenta y

Transacciones, Ciudad y país, de igual modo se implementaran en una base de

datos Oracle y se elaboraran los sockets cliente y sockets server para hacer los

movimientos mencionados y poder probarlos.

Al igual se crea un diseño de un conjunto de datos de prueba y cargue de los

mismos realizando

las operaciones insert, update, y select, elaborando el código de programación

bajo el lenguaje de programación Java.


OBJETIVOS

Objetivo general

Crear una base de datos con conexión por medio de de sockets que permitirá

realizar consulta de saldos, retiros y consignaciones.

Objetivos Específicos

 Aprender el concepto de los sockets, su funcionalidad y ponerlos en

práctica.

 Instalar software de manejo de bases de datos como por ejemplo ORACLE

XPRESS y realizar conexiones entre java y las bases de datos.

 Realizar el modelo entidad de relación y diagrama de una base de datos

para su posterior implementación en el modelo físico.

 Aprender a crear, insertar, actualizar y eliminar datos de tablas y usuarios.

 Trabajar en equipo para obtener la información requerida en el desarrollo

del trabajo.
2. DESCRIPCIÓN DEL PROBLEMA

El banco XYZ requiere que se desarrolle un prototipo transaccional, para simular

la ejecución de tres transacciones a saber, una consulta, una consignación y un

retiro. Para el desarrollo del proyecto, se requiere:

• Hacer un modelo entidad relaciónsencillo del banco XYZ, con las

Entidades de saldo, cliente, ciudad, país y movimientos (el propósito es

académico).

•Implementar el modelo en una base de datos libre como Oracle 11g R2 Express,

por ejemplo.

•Desarrollar los sockets server y cliente respectivos para hacer una consignación

(insert), un retiro(Update) y una consulta (select). • Probar las operaciones desde

el socket cliente con el socket server iniciado. El proyecto se puede desarrollar,

utilizando socktes con Java o C++ en Windows oLinux utilizando la base de datos

mysql o potsgreSQL , que son libres.


Se pide elaborar un documento completo con todo el proceso de

las especificaciones de:

1. Fundamentos de socketsen C++ o en Java.

2. Diseño del modelo de comunicaciones con sockets.

3. Modelo Entidad Relación de base de datos de saldos de la cuenta de ahorros

de un cliente en un Banco. El bancoXYZ requiere que se desarrolle un prototipo

transaccional, para simular la ejecución de tres transacciones a saber, una

consulta, una consignación y un retiro.


3. MODELO ENTIDAD RELACIÓN
4. PROCESO DE IMPLANTACIÓN EN BASE DE DATOS

 Primero accedemos a la conexión.


 Se empiezan a crear las tablas una por una, la primera que creamos es

PAIS

Y luego hacemos lo mismo con las otras tablas


5. ESTADO DEL ARTE DE CONSTRUCCIÓN DE UN SOCKET

SOCKETS EN JAVA

La programación en red siempre ha sido dificultosa, el programador debía de

conocer la mayoría de los detalles de la red, incluyendo el hardware utilizado, los

distintos niveles en que se divide la capa de red, las librerías necesarias para

programar en cada capa, etc. Pero, la idea simplemente consiste en obtener

información desde otra máquina, aportada por otra aplicación software. Por lo

tanto, de cierto modo se puede reducir al mero hecho de leer y escribir archivos,

con ciertas salvedades. El sistema de Entrada/Salida de Unix sigue el paradigma

que normalmente se designa como Abrir-Leer-Escribir-Cerrar. Antes de que un

proceso de usuario pueda realizar operaciones de entrada/salida, debe hacer una

llamada a Abrir (open) para indicar, y obtener los permisos del fichero o dispositivo

que se desea utilizar. Una vez que el fichero o dispositivo se encuentra abierto, el

proceso de usuario realiza una o varias llamadas a Leer (read) y Escribir (write),

para la lectura y escritura de los datos. El proceso de lectura toma los datos desde

el objeto y los transfiere al proceso de usuario, mientras que el de escritura los

transfiere desde el proceso de usuario al objeto. Una vez concluido el intercambio

de información, el proceso de usuario llamará a Cerrar (close) para informar al

sistema operativo que ha finalizado la utilización del fichero o dispositivo. En Unix,

un proceso tiene un conjunto de descriptores de entrada/salida desde donde leer y

por donde escribir. Estos descriptores pueden estar referidos a ficheros,


dispositivos, o canales de comunicaciones sockets. El ciclo de vida de un

descriptor, aplicado a un canal de comunicación (por ejemplo, un socket), está

determinado por tres fases:

• Creación, apertura del socket

• Lectura y Escritura, recepción y envío de datos por el socket

• Destrucción, cierre del socket

CLASES PARA LAS COMUNICACIONES DE RED EN JAVA:( java.net)

En las aplicaciones en red es muy común el paradigma cliente-servidor. El

servidor es el que espera las conexiones del cliente (en un lugar claramente

definido) y el cliente es el que lanza las peticiones a la maquina donde se está

ejecutando el servidor, y al lugar donde está esperando el servidor (el puerto(s)

específico que atiende). Una vez establecida la conexión, ésta es tratada como un

stream (flujo) típico de entrada/salida.

Cuando se escriben programas Java que se comunican a través de la red, se está

programando en la capa de aplicación. Típicamente, no se necesita trabajar con

las capas TCP y UDP, en su lugar se puede utilizar las clases del paquete

java.net. Estas clases proporcionan comunicación de red independiente del

sistema.

A través de las clases del paquete java.net, los programas Java pueden utilizar

TCP o UDP para comunicarse a través de Internet. Las clases URL,


URLConnection, Socket, y SocketServer utilizan TCP para comunicarse a través

de la Red. Las clases DatagramPacket y DatagramServer utilizan UDP.

TCP proporciona un canal de comunicación fiable punto a punto, lo que utilizan

para comunicarse las aplicaciones cliente-servidor en Internet. Las clases Socket y

ServerSocket del paquete java.net proporcionan un canal de comunicación

independiente del sistema utilizando TCP, cada una de las cuales implementa el

lado del cliente y el servidor respectivamente.

Así el paquete java.net proporciona, entre otras, las siguientes clases, que son las

que se verán con detalle:

• Socket: Implementa un extremo de la conexión TCP.

• ServerSocket: Se encarga de implementar el extremo Servidor de la

conexión en la que se esperarán las conexiones de los clientes.

• DatagramSocket: Implementa tanto el servidor como el cliente cuando se

utiliza UDP.

• DatagramPacket: Implementa un datagram packet, que se utiliza para la

creación de servicios de reparto de paquetes sin conexión. Sistemas

Distribuidos::Sockets en Java EUI-SG/INFOR.UVA.ES 3

• InetAddress: Se encarga de implementar la dirección IP.


La clase Socket del paquete java.net es una implementación independiente de la

plataforma de un cliente para un enlace de comunicación de dos vías entre un

cliente y un servidor. Utilizando la clase java.net.Socket en lugar de tratar con

código nativo, los programas Java pueden comunicarse a través de la red de una

forma independiente de la plataforma.

El entorno de desarrollo de Java incluye un paquete, java.io, que contiene un

juego de canales de entrada y salida que los programas pueden utilizar para leer y

escribir datos. Las clases InputStream y OutputStream del paquete java.io son

superclases abstractas que definen el comportamiento de los canales de I/O de

tipo stream de Java. java.io también incluye muchas subclases de InputStream y

OtputStream que implementan tipos especificos de canales de I/O.

DATAGRAM SOCKET (Servicio sin Conexión)

Es el más simple, lo único que se hace es enviar los datos, mediante la creación

de un socket y utilizando los métodos de envío y recepción apropiados.

Se trata de un servicio de transporte sin conexión. Son más eficientes que TCP,

pero no está garantizada la fiabilidad: los datos se envían y reciben en paquetes,

cuya entrega no está garantizada; los paquetes pueden ser duplicados, perdidos o

llegar en un orden diferente al que se envió.

El protocolo de comunicaciones con datagramas UDP, es un protocolo sin

conexión, es decir, cada vez que se envíen datagramas es necesario enviar el


descriptor del socket local y la dirección del socket que debe recibir el datagrama.

Como se puede ver, hay que enviar datos adicionales cada vez que se realice una

comunicación.

• public class java.net.DatagramSocket extends java.lang.Object

Constructores:

• public DatagramSocket () throws SocketException Se encarga de construir

un socket para datagramas y de conectarlo al primer puerto disponible.

• public DatagramSocket (int port) throws SocketException Ídem, pero con la

salvedad de que permite especificar el número de puerto asociado.

• public DatagramSocket (int port, InetAddress ip) throws SocketException

Permite especificar, además del puerto, la dirección local a la que se va a asociar

el socket.

Métodos:

• public void close() Cierra el socket.

protected void finalize() Asegura el cierre del socket si no existen más referencias

al mismo.

• public int getLocalPort() Retorna el número de puerto en el host local al que

está conectado el socket.


• public void receive (DatagramPacket p) throws IOException Recibe un

DatagramPacket del socket, y llena el búfer con los datos que recibe.

• public void send (DatagramPacket p) throws IOException Envía un

DatagramPacket a través del socket.

DATAGRAM PACKET

Un DatagramSocket envía y recibe los paquetes y un DatagramPacket contiene la

información relevante. Cuando se desea recibir un datagrama, éste deberá

almacenarse bien en un búfer o Sistemas Distribuidos::Sockets en Java EUI-

SG/INFOR.UVA.ES 4 un array de bytes. Y cuando preparamos un datagrama para

ser enviado, el DatagramPacket no sólo debe tener la información, sino que

además debe tener la dirección IP y el puerto de destino, que puede coincidir con

un puerto TCP.

• pulic final class java.net.DatagramPacket extends java.lang.Object


Constructores:

• public DatagramPacket(byte ibuf[], int ilength) Implementa un

DatagramPacket para la recepción de paquetes de longitud ilength, siendo el valor

de este parámetro menor o igual que ibuf.length.

• public DatagramPacket(byte ibuf[], int ilength, InetAddress iaddr, int iport)

Implementa un DatagramPacket para el envío de paquetes de longitud ilength al

número de puerto especificado en el parámetro iport, del host especificado en la

dirección de destino que se le pasa por medio del parámetro iaddr.

Métodos:

• public InetAddress getAddress ()

Retorna la dirección IP del host al cual se le envía el datagrama o del que el

datagrama se recibió.

• public byte[] getData()

Retorna los datos a recibir o a enviar.

• public int getLength()

Retorna la longitud de los datos a enviar o a recibir.

• public int getPort()


Retorna el número de puerto de la máquina remota a la que se le va a enviar el

datagrama o del que se recibió.

STREAM SOCKET (Servicio Orientado a Conexión)

Es un servicio orientado a conexión donde los datos se transfieren sin

encuadrarlos en registros o bloques. Si se rompe la conexión entre los procesos,

éstos serán informados. El protocolo de comunicaciones con streams es un

protocolo orientado a conexión, ya que para establecer una comunicación

utilizando el protocolo TCP, hay que establecer en primer lugar una conexión entre

un par de sockets. Mientras uno de los sockets atiende peticiones de conexión

(servidor), el otro solicita una conexión (cliente). Una vez que los dos sockets

estén conectados, se pueden utilizar para transmitir datos en ambas direcciones.

Permite a las aplicaciones Cliente y Servidor, disponer de un stream que facilita la

comunicación entre ambos, obteniéndose una mayor fiabilidad.

El funcionamiento es diferente al anterior ya que cada extremo se comportará de

forma diferente, el servidor adopta un papel (inicial) pasivo y espera conexiones de

los clientes. Mientras que el cliente adoptará un papel (inicial) activo, solicitando

conexiones al servidor.
EN LA PARTE DEL SERVIDOR SE TIENE:

• public final class java.net.ServerSocket extends java.lang.Object

Constructores:

• public ServerSocket (int port) throws IOException

Se crea un socket local al que se enlaza el puerto especificado en el parámetro

port, si se especifica un 0 en dicho parámetro creará el socket en cualquier puerto

disponible. Puede aceptar hasta 50 peticiones en cola pendientes de conexión por

parte de los clientes.

• public ServerSocket (int port , int count) throws IOException Aquí, el

parámetro count sirve para que puede especificarse, el número máximo de

peticiones de conexión que se pueden mantener en cola.

Hay que recordar, que es fundamental que el puerto escogido sea conocido por el

cliente, en caso contrario, no se podría establecer la conexión.

Métodos:
• public Socket accept () throws IOException

Sobre un ServerSocket se puede realizar una espera de conexión por parte del

cliente mediante el método accept(). Hay que decir, que este método es de

bloqueo, el proceso espera a que se realice una conexión por parte del cliente

para seguir su ejecución. Una vez que se ha establecido una conexión por el

cliente, este método devolverá un objeto tipo Socket, a través del cual se

establecerá la comunicación con el cliente.

• public void close () throws IOException

Se encarga de cerrar el socket.

• public InetAddress getInetAddress ()

Retorna la dirección IP remota a la cual está conectado el socket. Si no lo está

retornará null .

• public int getLocalPort ()

Retorna el puerto en el que está escuchando el socket.

• public static void setSocketImplFactory (SocketImplFactory fac) throws

IOException

Este método establece la compañía de implementación del socket para la

aplicación. Debido a que cuando una aplicación crea un nuevo socket, se realiza

una llamada al método createSocketImpl() de la compañía que implementa al


socket. Es por tanto en el parámetro fac, donde se especificará la citada

compañía.

• public String toString( )

Retorna un string representando el socket.

EN LA PARTE DEL CLIENTE:

• public final class java.net.Socket extends java.lang.Object

Constructores:

• public Socket (InetAddress address, int port) throws IOException

Crea un StreamSocket y lo conecta al puerto remoto y dirección IP remota

especificados.

• public Socket (InetAddress address, int port , boolean stream) throws

IOException

Ídem a la anterior incluyendo el parámetro booleano stream que si es true creará

un StreamSocket y si es false un DatagramSocket (En desuso).

• public Socket (String host, int port) throws UnKnownHostException,

IOException
Crea un StreamSocket y lo conecta al número de puerto y al nombre de host

especificados. public Socket (String host , int port , boolean stream) throws

IOException

Ídem al anterior incluyendo el parámetro booleano stream que si es true creará un

StreamSocket y si es false un DatagramSocket (En desuso).

Métodos:

• public void close() throws IOException

Se encarga de cerrar el socket

• public InetAddress getInetAddress ()

Retorna la dirección IP remota a la que se conecta el socket.

• public InputStream getInputStream () throws IOException

Retorna un input stream para la lectura de bytes desde el socket.

• public int getLocalPort()

Retorna el puerto local al que está conectado el socket.

• public OutputStream getOutputStream () throws IOException

Retorna un output stream para la escritura de bytes hacia el socket.

• public int getPort ()


Retorna el puerto remoto al que está conectado el socket.

• public static void setSocketImplFactory (SocketImplFactory fac) throws

IOException

Este método establece la compañía de implementación del socket para la

aplicación. Debido a que cuando una aplicación crea un nuevo socket, se realiza

una llamada al método createSocketImpl( ) de la Sistemas Distribuidos::Sockets

en Java EUI-SG/INFOR.UVA.ES 6 compañía que implementa al socket. Es por

tanto en el parámetro fac , donde especificaremos la citada compañía

LA CLASE

InetAddress

Esta clase implementa la dirección IP.

• public final class java.net.InetAddress extends java.lang.Object

Constructores:
Para crear una nueva instancia de esta clase se debe de llamar a los métodos

getLocalHost(), getByname() o getAllByName()

Métodos:

• public boolean equals (Object obj)

Devuelve un booleano a true si el parámetro que se la pasa no es null e

implementa la misma dirección IP que el objeto. Dos instancias de InetAddress

implementan la misma dirección IP si la longitud del vector de bytes que nos

devuelve el método getAddress() es la misma para ambas y cada uno de los

componentes del vector de componentes es el mismo que el vector de bytes.

• public byte[] getAddress ()

Retorna la dirección raw IP del objeto InetAddress. Hay que tener en cuenta que el

byte de mayor orden de la dirección estará en getAddress()[0] .

• public static InetAddress[] getAllByName(String host) throws

UnknownHostException Retorna un vector con todas las direcciones IP del host

especificado en el parámetro.

• public static InetAddress getByName (String host) throws

UnknownHostException
Retorna la dirección IP del nombre del host que se le pasa como parámetro,

aunque también se le puede pasar un string representando su dirección IP

• public String getHostName()

Retorna el nombre del host para esta dirección IP.

• public static InetAddress getLocalHost() throws UnknownHostException

Retorna la dirección IP para el host local.

• public int hashCode ()

Retorna un código hash para esta dirección IP.

• public String toString ()

Retorna un String representando la dirección IP.

ENVIO Y RECEPCIÓN A TRAVÉS DE SOCKETS

El servidor creará un socket, utilizando ServerSocket, le asignará un puerto y una

dirección, una vez haga el accept para esperar llamadas, se quedará bloqueado a

la espera de las mismas. Una vez llegue una llamada el accept creará un Socket

para procesarla.
A su vez, cuando un cliente desee establecer una conexión, creará un socket y

establecerá una conexión al puerto establecido. Sólo es en este momento, cuando

se da una conexión real y se mantendrá hasta su liberación mediante close().

Para poder leer y escribir datos, los sockets disponen de unos stream asociados,

uno de entrada (InputStream) y otro de salida (OutputStream) respectivamente.

Para obtener estos streams a partir del socket utilizaremos :

• ObjetoDeTipoSocket.getInputStream ()

Devuelve un objeto de tipo

• InputStream. ObjetoDeTipoSocket.getOutputStream ()

Devuelve un objeto de tipo OutputStream.

Para el envío de datos, puede utilizarse OutputStream directamente en el caso de

que se quiera enviar un flujo de bytes sin búfer o también puede crearse un objeto

de tipo stream basado en el OutputStream que proporciona el socket.


Figura 1. Esquema de conexión mediante sockets stream.

En Java, crear una conexión socket TCP/IP se realiza directamente con el paquete

java.net. En la Figura 1 se muestra un diagrama de lo que ocurre en el lado del

cliente y del servidor.

El servidor establece un puerto y espera a que el cliente establezca la conexión.

Cuando el cliente solicite una conexión, el servidor abrirá la conexión socket con el

método accept().
El cliente establece una conexión con la máquina host a través del puerto que se

designe en port#. El cliente y el servidor se comunican con manejadores

InputStream y OutputStream

Si se está programando un cliente, el socket se abre de la forma:

Socket miSocket; miSocket= new Socket(host, puerto);

Cuando se selecciona un número de puerto, se debe tener en cuenta que los

puertos en el rango 0-1023 están reservados. Estos puertos son los que utilizan

los servicios estándar del sistema como email, ftp, http, etc. Por lo que, para

aplicaciones de usuario, el programador deberá asegurarse de seleccionar un

puerto por encima del 1023.


Hasta ahora no se han utilizado excepciones; pero deben tener en cuenta la

captura de excepciones cuando se está trabajando con sockets. Así :

Socket miSocket;

try {

miSocket= new Socket(host, puerto);

} catch(IOException e) {

System.out.println(e);

} catch (UnknownHostException uhe) {

System.out.println(uhe);

En el caso de estar implementando un servidor, la forma de apertura del socket

sería como sigue:

Socket socketSrv;

try {

socketSrv= new ServerSocket(puerto);


} catch(IOException e) {

System.out.println(e);

Cuando se implementa un servidor se necesita crear un objeto Socket a partir del

ServerSocket, para que éste continúe ateniendo las conexiones que soliciten

potenciales nuevos clientes y poder servir al cliente, recién conectado, a través del

Socket creado:

Socket socketServcio= null;

try {

socketServicio= socketSrv.accept();

} catch(IOException e) {

System.out.println(e);

}
CREACIÓN DE STREAMS

CREACIÓN DE STREAMS DE ENTRADA

En la parte cliente de la aplicación, se puede utilizar la clase DataInputStream para

crear un stream de entrada que esté listo a recibir todas las respuestas que el

servidor le envíe.

DataInputStream inSocket;

try {

inSocket= new DataInputStream(miSocket.getInputStream());

} catch( IOException e ) {

System.out.println( e );

La clase DataInputStream permite la lectura de líneas de texto y tipos de datos

primitivos de Java de un modo altamente portable; dispone de métodos para leer

todos esos tipos como: read(), readChar(), readInt(), readDouble() y readUTF().

Deberá utilizarse la función que se crea necesaria dependiendo del tipo de dato

que se espera recibir del servidor. En el lado del servidor, también se usará

DataInputStream, pero en este caso para recibir las entradas que se produzcan de

los clientes que se hayan conectado:


DataInputStream inSocket;

try {

inSocket=new DataInputStream(socketServicio.getInputStream());

} catch(IOException e) {

System.out.println(e);

CREACIÓN DE STREAMS DE SALIDA

En el lado del cliente, puede crearse un stream de salida para enviar información

al socket del servidor utilizando las clases PrintStream o DataOutputStream:

PrintStream outSocket;

try {

outSocket= new PrintStream(miSocket.getOutputStream());

} catch(IOException e) {

System.out.println(e);

}
La clase PrintStream tiene métodos para la representación textual de todos los

datos primitivos de Java. Sus métodos write y println() tienen una especial

importancia en este aspecto. No obstante, para el envío de información al servidor

también podemos utilizar DataOutputStream:

DataOutputStream outSocket;

try {

outSocket= new DataOutputStream(miSocket.getOutputStream());

} catch(IOException e) {

System.out.println( e );

La clase DataOutputStream permite escribir cualquiera de los tipos primitivos de

Java, muchos de sus métodos escriben un tipo de dato primitivo en el stream de

salida. De todos Sistemas Distribuidos::Sockets en Java EUI-SG/INFOR.UVA.ES

10 esos métodos, el más útil quizás sea writeBytes(). En el lado del servidor,

puede utilizarse la clase PrintStream para enviar información al cliente:

PrintStream outSocket;

try {

outSocket= new PrintStream(socketServicio.getOutputStream());

} catch(IOException e) {
System.out.println(e);

Pero también puede utilizarse la clase DataOutputStream como en el caso de

envío de información desde el cliente.

CIERRE DE SOCKETS

Siempre deben cerrarse los canales de entrada y salida que se hayan abierto

durante la ejecución de la aplicación.

EN EL LADO DEL CLIENTE:

try {

outSocket.close(); inSocket.close(); miSocket.close();

} catch(IOException e) {

System.out.println(e);

EN EL LADO DEL SERVIDOR:

try {

outSocket.close(); inSocket.close(); socketServicio.close();

socketSrv.close();
} catch(IOException e) { System.out.println(e); }
6. CONCLUSIONES (Primera Entrega)

 El modelo entidad relación nos permite tener un plano de la base de datos,

y son los cimientos para cualquier tipo de desarrollo de software.

 El estado del arte nos permite evaluar todas las consideraciones a tener en

cuenta sobre un tema, esto da pie para que empecemos con todas las

herramientas necesarias en cuanto a conocimiento para poder construir un

socket que es lo que nos competerá en futuras entregas.


7. BIBLIOGRAFÍA

 Extraído de : ‘https://www.infor.uva.es/~fdiaz/sd/doc/java.net.pdf’consultado

el 28 de Mayo de 2020.

 Extraído de : https://www.youtube.com/watch?v=L0Y6hawPB-

E&list=PLU8oAlHdN5BktAXdEVCLUYzvDyqRQJ2lk&index=190 consultado

el 25 de Mayo de 2020.

 Extraído de : https://docs.oracle.com/javase/8/docs/api/ consultado el 30 de

Mayo de 2020.

También podría gustarte