{"id":2054,"date":"2023-12-01T12:05:50","date_gmt":"2023-12-01T15:05:50","guid":{"rendered":"https:\/\/stackcodelab.com\/blog\/?p=2054"},"modified":"2023-12-01T12:05:57","modified_gmt":"2023-12-01T15:05:57","slug":"capitulo-9-programacion-de-red-y-sockets-en-java","status":"publish","type":"post","link":"https:\/\/stackcodelab.com\/blog\/capitulo-9-programacion-de-red-y-sockets-en-java\/","title":{"rendered":"Cap\u00edtulo 9: Programaci\u00f3n de Red y Sockets en Java"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">En este cap\u00edtulo, exploraremos la programaci\u00f3n de red en Java y c\u00f3mo utilizar sockets para la comunicaci\u00f3n entre aplicaciones a trav\u00e9s de una red. Esta es una habilidad esencial para desarrollar aplicaciones que se conectan a servidores, intercambian datos y se comunican a trav\u00e9s de Internet.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a>9.1. Introducci\u00f3n a la Programaci\u00f3n de Red<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La&nbsp;<strong>programaci\u00f3n de red<\/strong>&nbsp;en Java implica la creaci\u00f3n de aplicaciones que pueden comunicarse a trav\u00e9s de redes, ya sea en una red local o a trav\u00e9s de Internet. En Java, esto se logra utilizando la API&nbsp;<code>java.net<\/code>, que proporciona clases y m\u00e9todos para trabajar con redes y comunicaci\u00f3n.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a>9.2. Sockets en Java<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Los&nbsp;<strong>sockets<\/strong>&nbsp;son la base de la comunicaci\u00f3n en red en Java. Los sockets permiten la comunicaci\u00f3n entre dos m\u00e1quinas a trav\u00e9s de una red utilizando un flujo de datos bidireccional. Hay dos tipos de sockets en Java: sockets de servidor (ServerSocket) y sockets de cliente (Socket).<strong><br><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejemplo 9.2.1: Comunicaci\u00f3n B\u00e1sica Cliente-Servidor<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A continuaci\u00f3n, se muestra un ejemplo simple de un servidor y un cliente que se comunican a trav\u00e9s de sockets.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Servidor:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import java.io.*;\r\nimport java.net.*;\r\n\r\npublic class Servidor {\r\n    public static void main(String&#91;] args) throws IOException {\r\n        int puerto = 12345;\r\n        ServerSocket serverSocket = new ServerSocket(puerto);\r\n        System.out.println(\"Servidor esperando conexiones en el puerto \" + puerto);\r\n\r\n        Socket socketCliente = serverSocket.accept();\r\n        System.out.println(\"Cliente conectado desde \" + socketCliente.getInetAddress());\r\n\r\n        \/\/ Flujo de entrada y salida para comunicaci\u00f3n\r\n        PrintWriter out = new PrintWriter(socketCliente.getOutputStream(), true);\r\n        BufferedReader in = new BufferedReader(new InputStreamReader(socketCliente.getInputStream()));\r\n\r\n        String mensajeCliente;\r\n        while ((mensajeCliente = in.readLine()) != null) {\r\n            System.out.println(\"Cliente dice: \" + mensajeCliente);\r\n            out.println(\"Respuesta del servidor: \" + mensajeCliente);\r\n        }\r\n\r\n        \/\/ Cerrar conexiones\r\n        in.close();\r\n        out.close();\r\n        socketCliente.close();\r\n        serverSocket.close();\r\n    }\r\n}\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Cliente:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import java.io.*;\r\nimport java.net.*;\r\n\r\npublic class Cliente {\r\n    public static void main(String&#91;] args) throws IOException {\r\n        String servidor = \"localhost\";\r\n        int puerto = 12345;\r\n        Socket socket = new Socket(servidor, puerto);\r\n\r\n        \/\/ Flujo de entrada y salida para comunicaci\u00f3n\r\n        PrintWriter out = new PrintWriter(socket.getOutputStream(), true);\r\n        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));\r\n\r\n        \/\/ Enviar mensaje al servidor\r\n        out.println(\"Hola, servidor\");\r\n\r\n        \/\/ Recibir respuesta del servidor\r\n        String respuestaServidor = in.readLine();\r\n        System.out.println(\"Servidor dice: \" + respuestaServidor);\r\n\r\n        \/\/ Cerrar conexiones\r\n        in.close();\r\n        out.close();\r\n        socket.close();\r\n    }\r\n}\r<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a>9.3. Ejercicios de Pr\u00e1ctica<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejercicio 9.3.1: Chat Cliente-Servidor<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Desarrolla una aplicaci\u00f3n de chat cliente-servidor donde varios clientes pueden conectarse a un servidor y enviarse mensajes entre s\u00ed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejercicio 9.3.2: Transferencia de Archivos<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Crea una aplicaci\u00f3n que permita a los clientes cargar y descargar archivos desde un servidor a trav\u00e9s de una conexi\u00f3n de red.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Resumen del Cap\u00edtulo<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La programaci\u00f3n de red y el uso de sockets en Java son habilidades esenciales para desarrollar aplicaciones que se comunican a trav\u00e9s de una red. En este cap\u00edtulo, hemos introducido los conceptos b\u00e1sicos y proporcionado un ejemplo de comunicaci\u00f3n b\u00e1sica entre un servidor y un cliente. Los ejercicios proporcionados permiten a los lectores practicar y profundizar en su comprensi\u00f3n de la programaci\u00f3n de red en Java.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a>Respuesta ejercicio 9.3.1:<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Para resolver el ejercicio de desarrollar una aplicaci\u00f3n de chat cliente-servidor en Java donde varios clientes pueden conectarse a un servidor y enviarse mensajes entre s\u00ed, sigue estos pasos:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Paso 1: Desarrollo del Servidor de Chat<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Primero, desarrolla el servidor de chat que escuchar\u00e1 a los clientes y gestionar\u00e1 las conexiones y los mensajes. Utilizaremos un&nbsp;<code>ServerSocket<\/code>&nbsp;para aceptar conexiones de m\u00faltiples clientes y un hilo separado para cada cliente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Servidor de Chat:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import java.io.*;\r\nimport java.net.*;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\npublic class ServidorChat {\r\n    private static final int PUERTO = 12345;\r\n    private static List&lt;PrintWriter> clientes = new ArrayList&lt;>();\r\n\r\n    public static void main(String&#91;] args) {\r\n        System.out.println(\"Servidor de chat iniciado en el puerto \" + PUERTO);\r\n\r\n        try (ServerSocket serverSocket = new ServerSocket(PUERTO)) {\r\n            while (true) {\r\n                new ClienteHandler(serverSocket.accept()).start();\r\n            }\r\n        } catch (IOException e) {\r\n            e.printStackTrace();\r\n        }\r\n    }\r\n\r\n    private static class ClienteHandler extends Thread {\r\n        private Socket socket;\r\n        private PrintWriter out;\r\n\r\n        public ClienteHandler(Socket socket) {\r\n            this.socket = socket;\r\n        }\r\n\r\n        public void run() {\r\n            try {\r\n                out = new PrintWriter(socket.getOutputStream(), true);\r\n                clientes.add(out);\r\n\r\n                BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));\r\n                String mensaje;\r\n\r\n                while ((mensaje = in.readLine()) != null) {\r\n                    System.out.println(\"Mensaje recibido: \" + mensaje);\r\n                    for (PrintWriter cliente : clientes) {\r\n                        cliente.println(mensaje);\r\n                    }\r\n                }\r\n            } catch (IOException e) {\r\n                e.printStackTrace();\r\n            } finally {\r\n                if (out != null) {\r\n                    clientes.remove(out);\r\n                }\r\n            }\r\n        }\r\n    }\r\n}\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Paso 2: Desarrollo del Cliente de Chat<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A continuaci\u00f3n, desarrolla el cliente de chat que se conectar\u00e1 al servidor y permitir\u00e1 a los usuarios enviar y recibir mensajes en el chat.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Cliente de Chat:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import java.io.*;\r\nimport java.net.*;\r\n\r\npublic class ClienteChat {\r\n    public static void main(String&#91;] args) {\r\n        String servidor = \"localhost\";\r\n        int puerto = 12345;\r\n\r\n        try (Socket socket = new Socket(servidor, puerto);\r\n             PrintWriter out = new PrintWriter(socket.getOutputStream(), true);\r\n             BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));\r\n             BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {\r\n\r\n            System.out.println(\"Conectado al servidor de chat. Ingrese su nombre:\");\r\n\r\n            String nombre = reader.readLine();\r\n            out.println(nombre);\r\n\r\n            System.out.println(\"\u00a1Comienza a chatear! Escribe 'salir' para desconectarte.\");\r\n\r\n            Thread mensajeEntrante = new Thread(() -> {\r\n                String mensaje;\r\n                try {\r\n                    while ((mensaje = in.readLine()) != null) {\r\n                        System.out.println(mensaje);\r\n                    }\r\n                } catch (IOException e) {\r\n                    e.printStackTrace();\r\n                }\r\n            });\r\n\r\n            mensajeEntrante.start();\r\n\r\n            String userInput;\r\n            while (true) {\r\n                userInput = reader.readLine();\r\n                if (userInput.equalsIgnoreCase(\"salir\")) {\r\n                    break;\r\n                }\r\n                out.println(nombre + \": \" + userInput);\r\n            }\r\n        } catch (IOException e) {\r\n            e.printStackTrace();\r\n        }\r\n    }\r\n}\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Paso 3: Ejecuci\u00f3n del Servidor y los Clientes<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ejecuta al menos un servidor y varios clientes para comenzar a chatear. Los clientes pueden conectarse al servidor y enviar mensajes. El servidor reenviar\u00e1 los mensajes a todos los clientes conectados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Resultado Esperado:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Los clientes pueden conectarse al servidor, enviar mensajes y recibir mensajes de otros clientes. Esto permite una comunicaci\u00f3n de chat en tiempo real entre m\u00faltiples clientes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este ejercicio demuestra c\u00f3mo crear una aplicaci\u00f3n de chat cliente-servidor en Java donde varios clientes pueden conectarse al servidor y enviarse mensajes entre s\u00ed. Puedes personalizar este ejemplo para incluir m\u00e1s caracter\u00edsticas, como nombres de usuario, comandos, etc.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a>Respuesta ejercicio 9.3.2:<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Para crear una aplicaci\u00f3n que permita a los clientes cargar y descargar archivos desde un servidor a trav\u00e9s de una conexi\u00f3n de red en Java, sigue estos pasos:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Paso 1: Desarrollo del Servidor de Archivos<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Primero, desarrolla el servidor de archivos que escuchar\u00e1 a los clientes y gestionar\u00e1 las solicitudes de carga y descarga de archivos. Utilizaremos un&nbsp;<code>ServerSocket<\/code>&nbsp;para aceptar conexiones de los clientes y gestionar las operaciones de archivo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Servidor de Archivos:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import java.io.*;\r\nimport java.net.*;\r\n\r\npublic class ServidorArchivos {\r\n    private static final int PUERTO = 12345;\r\n    private static final String CARPETA_ARCHIVOS = \"archivos\/\";\r\n\r\n    public static void main(String&#91;] args) {\r\n        System.out.println(\"Servidor de archivos iniciado en el puerto \" + PUERTO);\r\n\r\n        try (ServerSocket serverSocket = new ServerSocket(PUERTO)) {\r\n            while (true) {\r\n                Socket socket = serverSocket.accept();\r\n                new ClienteHandler(socket).start();\r\n            }\r\n        } catch (IOException e) {\r\n            e.printStackTrace();\r\n        }\r\n    }\r\n\r\n    private static class ClienteHandler extends Thread {\r\n        private Socket socket;\r\n\r\n        public ClienteHandler(Socket socket) {\r\n            this.socket = socket;\r\n        }\r\n\r\n        public void run() {\r\n            try (DataInputStream dis = new DataInputStream(socket.getInputStream());\r\n                 DataOutputStream dos = new DataOutputStream(socket.getOutputStream())) {\r\n\r\n                String nombreArchivo = dis.readUTF();\r\n                File archivo = new File(CARPETA_ARCHIVOS + nombreArchivo);\r\n\r\n                if (archivo.exists()) {\r\n                    dos.writeBoolean(true);\r\n                    dos.writeLong(archivo.length());\r\n\r\n                    try (FileInputStream fis = new FileInputStream(archivo)) {\r\n                        byte&#91;] buffer = new byte&#91;4096];\r\n                        int leidos;\r\n                        while ((leidos = fis.read(buffer)) > 0) {\r\n                            dos.write(buffer, 0, leidos);\r\n                        }\r\n                    }\r\n                } else {\r\n                    dos.writeBoolean(false);\r\n                }\r\n\r\n            } catch (IOException e) {\r\n                e.printStackTrace();\r\n            }\r\n        }\r\n    }\r\n}\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Paso 2: Desarrollo del Cliente de Archivos<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A continuaci\u00f3n, desarrolla el cliente de archivos que se conectar\u00e1 al servidor y permitir\u00e1 a los usuarios cargar y descargar archivos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Cliente de Archivos:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import java.io.*;\r\nimport java.net.*;\r\n\r\npublic class ClienteArchivos {\r\n    public static void main(String&#91;] args) {\r\n        String servidor = \"localhost\";\r\n        int puerto = 12345;\r\n\r\n        try (Socket socket = new Socket(servidor, puerto);\r\n             DataInputStream dis = new DataInputStream(socket.getInputStream());\r\n             DataOutputStream dos = new DataOutputStream(socket.getOutputStream());\r\n             BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)) {\r\n\r\n            System.out.println(\"Conectado al servidor de archivos.\");\r\n\r\n            while (true) {\r\n                System.out.println(\"1. Descargar archivo\");\r\n                System.out.println(\"2. Salir\");\r\n                System.out.print(\"Seleccione una opci\u00f3n: \");\r\n                int opcion = Integer.parseInt(reader.readLine());\r\n\r\n                if (opcion == 1) {\r\n                    System.out.print(\"Ingrese el nombre del archivo a descargar: \");\r\n                    String nombreArchivo = reader.readLine();\r\n                    dos.writeUTF(nombreArchivo);\r\n\r\n                    boolean existe = dis.readBoolean();\r\n                    if (existe) {\r\n                        long tamano = dis.readLong();\r\n                        System.out.println(\"Descargando archivo...\");\r\n                        FileOutputStream fos = new FileOutputStream(nombreArchivo);\r\n\r\n                        byte&#91;] buffer = new byte&#91;4096];\r\n                        int leidos;\r\n                        long recibidos = 0;\r\n                        while (recibidos &lt; tamano &amp;&amp; (leidos = dis.read(buffer, 0, (int) Math.min(buffer.length, tamano - recibidos))) != -1) {\r\n                            fos.write(buffer, 0, leidos);\r\n                            recibidos += leidos;\r\n                        }\r\n\r\n                        fos.close();\r\n                        System.out.println(\"Archivo descargado.\");\r\n                    } else {\r\n                        System.out.println(\"El archivo no existe en el servidor.\");\r\n                    }\r\n                } else if (opcion == 2) {\r\n                    break;\r\n                }\r\n            }\r\n\r\n        } catch (IOException e) {\r\n            e.printStackTrace();\r\n        }\r\n    }\r\n}\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Paso 3: Crear una Carpeta para Archivos<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aseg\u00farate de tener una carpeta llamada \u00abarchivos\u00bb en la misma ubicaci\u00f3n que el servidor y el cliente. Esta carpeta se utiliza para almacenar los archivos que el servidor puede enviar y los archivos que los clientes pueden cargar.<strong><br><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Paso 4: Ejecuci\u00f3n del Servidor y los Clientes<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ejecuta el servidor y al menos un cliente para cargar y descargar archivos. Los clientes pueden seleccionar la opci\u00f3n \u00ab1\u00bb para descargar un archivo o \u00ab2\u00bb para salir.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Resultado Esperado:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Los clientes pueden cargar y descargar archivos desde el servidor a trav\u00e9s de una conexi\u00f3n de red. El servidor gestiona las solicitudes y env\u00eda los archivos solicitados a los clientes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este ejercicio muestra c\u00f3mo crear una aplicaci\u00f3n de carga y descarga de archivos cliente-servidor en Java. Puedes personalizar este ejemplo para incluir m\u00e1s caracter\u00edsticas, como una interfaz de usuario o autenticaci\u00f3n de usuarios.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En este cap\u00edtulo, exploraremos la programaci\u00f3n de red en Java y c\u00f3mo utilizar sockets para la comunicaci\u00f3n entre aplicaciones a trav\u00e9s de una red. Esta es una habilidad esencial para desarrollar aplicaciones que se conectan a servidores, intercambian datos y se comunican a trav\u00e9s de Internet. 9.1. Introducci\u00f3n a la Programaci\u00f3n de Red La&nbsp;programaci\u00f3n de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2055,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[40],"tags":[],"class_list":["post-2054","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java-y-otras-hierbas"],"uagb_featured_image_src":{"full":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/12\/Programacion-de-Red-y-Sockets-en-Java.jpg",1000,750,false],"thumbnail":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/12\/Programacion-de-Red-y-Sockets-en-Java-150x150.jpg",150,150,true],"medium":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/12\/Programacion-de-Red-y-Sockets-en-Java-300x225.jpg",300,225,true],"medium_large":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/12\/Programacion-de-Red-y-Sockets-en-Java-768x576.jpg",768,576,true],"large":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/12\/Programacion-de-Red-y-Sockets-en-Java.jpg",1000,750,false],"1536x1536":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/12\/Programacion-de-Red-y-Sockets-en-Java.jpg",1000,750,false],"2048x2048":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/12\/Programacion-de-Red-y-Sockets-en-Java.jpg",1000,750,false]},"uagb_author_info":{"display_name":"arquitecto","author_link":"https:\/\/stackcodelab.com\/blog\/author\/arquitecto\/"},"uagb_comment_info":0,"uagb_excerpt":"En este cap\u00edtulo, exploraremos la programaci\u00f3n de red en Java y c\u00f3mo utilizar sockets para la comunicaci\u00f3n entre aplicaciones a trav\u00e9s de una red. Esta es una habilidad esencial para desarrollar aplicaciones que se conectan a servidores, intercambian datos y se comunican a trav\u00e9s de Internet. 9.1. Introducci\u00f3n a la Programaci\u00f3n de Red La&nbsp;programaci\u00f3n de&hellip;","_links":{"self":[{"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/posts\/2054","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/comments?post=2054"}],"version-history":[{"count":1,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/posts\/2054\/revisions"}],"predecessor-version":[{"id":2056,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/posts\/2054\/revisions\/2056"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/media\/2055"}],"wp:attachment":[{"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/media?parent=2054"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/categories?post=2054"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/tags?post=2054"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}