# Proyecto primera evaluación
* https://github.com/jesusninoc/ClasesPSP/blob/master/2020-12-10.md#proyecto-primera-evaluaci%C3%B3n

------------------------

# Programación de comunicaciones en red:
 -	Comunicación entre aplicaciones.
 -	Roles cliente y servidor.
 -	Elementos de programación de aplicaciones en red. Librerías.
 -	Sockets.
 -	Creación de sockets.
 -	Enlazado y establecimiento de conexiones.
 -	Utilización de sockets para la transmisión y recepción de información.
 -	Programación de aplicaciones cliente y servidor.
 -	Utilización de hilos en la programación de aplicaciones en red.

# Serializar y deserializar

## Serializar y deserializar un objeto almacenado en un fichero en Java
https://www.jesusninoc.com/2018/01/07/serializar-y-deserializar-un-objeto-almacenado-en-un-fichero-en-java/

## Serializar y deserializar contenido en un fichero en Java
https://www.jesusninoc.com/2018/01/05/serializar-y-deserializar-contenido-en-un-fichero-en-java/

## Enviar objeto serializado TCP
* https://github.com/reikimitsu/dam2/tree/master/SeviciosProcesos/Tema%204/AplicacionClienteServidor/src/aplicacionclienteservidor
* https://github.com/reikimitsu/dam2/blob/master/SeviciosProcesos/Tema%204/AplicacionClienteServidor/src/aplicacionclienteservidor/Persona.java
* https://github.com/reikimitsu/dam2/blob/master/SeviciosProcesos/Tema%204/AplicacionClienteServidor/src/aplicacionclienteservidor/ServidorObjeto.java
* https://github.com/reikimitsu/dam2/blob/master/SeviciosProcesos/Tema%204/AplicacionClienteServidor/src/aplicacionclienteservidor/ClienteObjeto.java

## Enviar objeto serializado UDP
```Java
Persona per = new Persona("Juan", 20);

// Convertir objeto a bytes
ByteArrayOutputStream bs= new ByteArrayOutputStream();
ObjectOutPutStream out= new ObjectOutPutStream(bs);
out.writeObject(persona);
out.close();
byte[] bytes= bs.toByteArray()

// Para convertitr los bytes recibidos por el datagrama en un objeto Persona
byte recibidos= new byte[1024];
DatagramPacket paqRecibido= new DatagramPacket(recibidos,recibidos.lenth);
socket.receive(paqRecibido)

// Bytes al objeto
ByteArrayInputStream bais= new ByteArrayInputStream (recibidos)
ObjectInputStream in= new ObjectInputStream(bais);
Persona persona= (Persona)in.readObject();
in.close();
```

## Enviar una imagen entre un cliente y un servidor con Java (Sockets TCP)
https://www.jesusninoc.com/2018/01/29/enviar-una-imagen-entre-un-cliente-y-un-servidor-con-java-sockets-tcp/

## Understanding Java deserialization
https://nytrosecurity.com/2018/05/30/understanding-java-deserialization/

## HPE iMC 7.3 - RMI Java Deserialization
https://www.exploit-db.com/exploits/43927/

## A Java serializer in JavaScript
https://github.com/mbechler/serjs

## Extraer datos de una imagen que está subida a un servidor mediante el reconocimiento óptico de caracteres y el análisis de imágenes con Java utilizando Computer Vision API de Microsoft Azure
https://www.jesusninoc.com/01/09/extraer-datos-de-imagenes-que-estan-subidas-a-un-servidor-mediante-el-reconocimiento-optico-de-caracteres-y-el-analisis-de-imagenes-con-java-utilizando-computer-vision-api-de-microsoft-azure/

-----------------------

# Automatizar la programación en Java

## Utilización de dll
https://www.jesusninoc.com/11/28/crear-compilar-y-ejecutar-una-dll-con-microsoft-visual-c-que-abre-notepad-desde-powershell/
## Crear, compilar y ejecutar una clase de Java que ejecuta un cmdlet de PowerShell utilizando Runtime
https://www.jesusninoc.com/2018/02/08/crear-compilar-y-ejecutar-una-clase-de-java-que-ejecuta-un-cmdlet-de-powershell-utilizando-runtime/
## Aplicaciones basadas en métodos remotos (RMI)
https://github.com/jesusninoc/ClasesPSP/blob/master/2019-02-11.md#aplicaciones-basadas-en-m%C3%A9todos-remotos-rmi
