{"id":20094612,"url":"https://github.com/alansastre/java-networking","last_synced_at":"2025-03-02T16:18:17.710Z","repository":{"id":152300368,"uuid":"582601050","full_name":"alansastre/java-networking","owner":"alansastre","description":"Conexiones y transacciones de red en Java con la API java.net","archived":false,"fork":false,"pushed_at":"2022-12-27T10:29:15.000Z","size":6,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-13T03:32:27.224Z","etag":null,"topics":["http","http-client","http-request","http-server","http2","java","java-net","java-network","java-networking","java11","java17","ssl"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alansastre.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-27T10:29:08.000Z","updated_at":"2024-09-26T08:57:51.000Z","dependencies_parsed_at":null,"dependency_job_id":"9443b15a-c85d-49a3-b2e6-44fd259485c4","html_url":"https://github.com/alansastre/java-networking","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alansastre%2Fjava-networking","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alansastre%2Fjava-networking/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alansastre%2Fjava-networking/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alansastre%2Fjava-networking/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alansastre","download_url":"https://codeload.github.com/alansastre/java-networking/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241533639,"owners_count":19977826,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["http","http-client","http-request","http-server","http2","java","java-net","java-network","java-networking","java11","java17","ssl"],"created_at":"2024-11-13T16:51:26.138Z","updated_at":"2025-03-02T16:18:17.684Z","avatar_url":"https://github.com/alansastre.png","language":"Java","readme":"\n# API java.net\n\n## HTTP\n\nAPI java antigua: ``java.net.HttpUrlConnection``\n\nLibrerías: Apache HttpClient, Jetty, Spring RestTemplate (deprecated), Spring WebClient.\n\nAPI java nueva (\u003e= JDK 11): ``java.net.http.HttpClient``\n\n## Socket\nEl término programación con **sockets** se refiere a la escritura de programas que se ejecutan en varios ordenadores en los que los dispositivos están conectados entre sí mediante una red.\n\nHay dos protocolos de comunicación que podemos utilizar para la programación de sockets: El Protocolo de Datagramas de Usuario (UDP) y el Protocolo de Control de Transferencia (TCP).\n\nLa principal diferencia entre ambos es que el UDP no tiene conexión, es decir, no hay sesión entre el cliente y el servidor, mientras que el TCP está orientado a la conexión, lo que significa que primero debe establecerse una conexión exclusiva entre el cliente y el servidor para que se produzca la comunicación.\n\nEs común que los sockets se establezcan sobre redes TCP/IP con el fin de crear aplicaciones cliente/servidor en el caso de Java. UDP no es un protocolo corriente, y como tal, puede que no se encuentre a menudo.\n\n## HTTP vs. Sockets\n\nEl Protocolo de Transferencia de Hipertexto (HTTP) es un protocolo a nivel de aplicación para sistemas de información distribuidos, colaborativos e hipermedia. Es un protocolo genérico, sin estado, que puede utilizarse para muchas tareas más allá de su uso para el hipertexto, como servidores de nombres y sistemas de gestión de objetos distribuidos, mediante la ampliación de sus métodos de solicitud, códigos de error y cabeceras. Una de las características de HTTP es la tipificación y negociación de la representación de los datos, lo que permite construir sistemas independientes de los datos que se transfieren.\n\nPor su parte, un Socket es un punto final de un enlace de comunicación bidireccional entre dos programas que se ejecutan en la red. El Socket está vinculado a un número de puerto para que la capa TCP pueda identificar la aplicación a la que se destinan los datos. En otras palabras, los Sockets proporcionan una interfaz para programar redes en la capa de transporte. La comunicación de red utilizando Sockets es muy similar a la realización de E/S (I/O) de archivos. De hecho, el manejador del socket se trata como el manejador del archivo. La comunicación basada en sockets es independiente del lenguaje de programación utilizado para implementarla. Esto significa que un programa de socket escrito en lenguaje Java puede comunicarse con un programa escrito en un programa de socket que no sea Java (por ejemplo, C o C++).\n\n\n## Sockets en Java\nJava proporciona una colección de clases e interfaces que se encargan de los detalles de comunicación de **bajo nivel** entre el cliente y el servidor.\n\nLa mayoría de ellas están contenidas en el paquete ``java.net``, por lo que tenemos que hacer la siguiente importación:\n\n```java\nimport java.net.*;\n```\n\nTambién necesitamos el paquete ``java.io``, que nos proporciona flujos de entrada y salida para escribir y leer mientras nos comunicamos:\n\n\n```java\nimport java.io.*;\n```\n\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falansastre%2Fjava-networking","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falansastre%2Fjava-networking","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falansastre%2Fjava-networking/lists"}