Luego lleve el cliente a otra máquina y ejecute desde ahí usando el nombre de la máquina del servidor.



Documentos relacionados
Programación Avanzada. Juan Manuel Fernández. Curso 2011 Ejemplo de uso de sockets desde aplicaciones visuales. Usan un hilo en banco.

Federico Peinado

Sockets en Java. La Creatividad proviene de un conflicto de ideas. Uso de Sockets

Sockets en Java. Prof. Wílmer Pereira Universidad Simón Bolívar

Lab 01: Programación de Sockets en TCP

CLASE SOCKET. 1. Crear un nuevo socket usando un constructor de la clase. 2. El socket trata de conectarse al host remoto.

Universidad de Cantabria

1.- FUNDAMENTOS FUNCIONAMIENTO GENÉRICO JAVA SOCKETS Creación de Streams de Entrada...7

Las clases Java Socket y ServerSocket

EJEMPLOS PROGRAMACIÓN SOCKET - JAVA

PROGRAMACIÓN CLIENTE-SERVIDOR MEDIANTE SOCKETS EN JAVA

Desarrollar, usando Java, un cliente básico del protocolo web que permita enviar una solicitud HTTP a un servidor web y procesar la respuesta.

Práctica 2: Java Remote Method Invocation (RMI)

USANDO SERVLETS EN UN SERVIDOR WEB RESIN

Sockets. Introducción. Las redes de computadoras permiten al usuario. Curso Propedéutico Maestría en Ciencias de la Computación BUAP

Ingeniería del Software Arquitectura Física en 3 niveles

INSTITUTO POLITECNICO NACIONAL ESCUELA SUPERIOR DE CÓMPUTO

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C)

Cliente/Servidor en Java

Formato para prácticas de laboratorio

Práctica sobre compartición de instancias remotas.

Arquitecturas cliente/servidor

Modelo de Objetos Distribuidos

UNIVERSIDADE DA CORUÑA Departamento de Tecnoloxías da Información e as Comunicacións LABORATORIO DE RC: TUTORIAL DE SOCKETS EN JAVA

Universidad ORT - Arquitectura de Software. Requisitos

PROGRAMACION DISTRIBUIDA

Desarrollo de Servicios Web con JBuilder

Solución al Examen de Prácticas de Programación (Ingeniería Informática)

MICQ. Trabajo Práctico Final Seminario de Ingeniería en Informática I Facultad de Ingeniería, UBA. Junio Cátedra: Pablo Cosso

UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INGENIERÍA TELEMÁTICA. Daniel Díaz Sánchez

Excepciones. Gonzalo Méndez - Dpto. Ingeniería de Software e Inteligencia Artificial. Excepciones

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Tutorial básico del entorno de desarrollo Eclipse.

Práctica 5: Servidor web concurrente en Java

Clase Práctica Nº 1 ED 2015

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Aplicaciones Cliente/Servidor en Gambas Prof: Mileti, P.

1. Posicionarse en la vista Services y seleccionar el ítem Servers. En el menú contextual del Mouse seleccionar la opción Add Server

Práctica: Creación de un programa C# sencillo

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Examen de Redes - ETSIA 9 de septiembre - Primer Parcial

Introduciendo datos desde el

Pruebas de unidad utilizando JUnit Juan Manuel Fernández Peña, 2005

Generar Temas de Colores y Cambiarlos Dinámicamente en ZK

Aquí se declaran los. Aquí se declaran los métodos de la clase. *Atributos de la clase

MANUAL TÉCNICO DEL PROXY UTN

Uso de excepciones en Java

Introducción a Java LSUB. 15 de enero de 2015 GSYC

Programación Orientada a Objetos. Tema 7: Persistencia

UNIVERSIDAD POLITÉCNICA DE PACHUCA SOCKETS EN JAVA

RUEDA TORRES DULCE CAROLINA 3CM2 JAX-WS WEB SERVICES WEB APPLICATION DEVELOPMENT

Primera Escuela de la Red Temática SVO. Madrid, Noviembre, 2006 JAVA BÁSICO. Raúl Gutiérrez Sánchez LAEFF - INTA raul@laeff.inta.

Practica 11: Conexión de Java con Bases de datos Access

Asistir a una reunión de WebEx

Primeros pasos a la hora de utilizar BitDefender Client Security

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

1. El entorno de desarrollo Eclipse

Comunicacion en Java. Alejandro Escobar

Introducción Descripción del servicio

Multitarea en Java. Rafa Caballero - UCM

Acronis License Server. Guía del usuario

Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK.

11. Algunas clases estándar de Java (II)

Anexos Manual de Instalación

Java RMI. las RPC de Java. Parte I. Luis Fernando Llana Díaz. Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

Comunicado para los socios

Java RMI. Sistemas Distribuidos Rodrigo Santamaría

Plugin para NetBeans que realiza migración de una base de datos postgresql a couchdb.

Autenticación Biométrica Notarial. Instalación del sistema

Clases Java para comunicaciones en red

GUÍA DE LABORATORIO 5 ARREGLOS DE UNA DIMENSIÓN

Computadores y Comunicaciones. Práctica de Laboratorio: Diseño de una aplicación basada en el modelo cliente-servidor

Técnicas Avanzadas de Testing Automatizado

myappgen Usted Construye la aplicación mientras la ejecuta

EXCEPCIONES EN JAVA. Las sentencias que tratan las excepciones son try y catch. La sintaxis es:

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.

GUÍA PARA LA INSTALACIÓN DE MOODLE EN UN COMPUTADOR PERSONAL QUE USA EL SISTEMA OPERATIVO MS. WINDOWS

USO DE LOS OBJETOS JLABEL, JTEXTFIELD Y JBUTTON

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

Introducción a JAX-WS Web Services

Programación Orientada a Objetos. Java: Excepciones

[Titulo] : Creacion de un Troyano de Conexion Inversa. [Lenguaje] : Delphi [Autor] : Doddy Hackman. [Temario]

1. Creación del repositorio

LABORATORIO DE RC PRÁCTICA 2: IMPLEMENTACIÓN DE UN CLIENTE Y SERVIDOR DE

Ejercicio 1 (3 puntos).-

Práctica de laboratorio: Exploración del protocolo FTP

Manual del Protocolo XML-RPC de Mensajería Negocios

MANUAL DE SOFTWARE DE VIDEOCONFERENCIA. WebEx

Práctica 4: Java Remote Method Invocation (RMI)

Arquitecturas cliente/servidor

1 HILOS (THREADS) EN JAVA

Día 2: Utilizando controles de datos en Visual Studio 2008.

APLICACIONES MÓVILES NATIVAS. Sesión 8: Arquitectura de las aplicaciones Android

Guía de instalación y configuración de IBM SPSS Modeler Social Network Analysis 16

MAINTraq RealTime MANUAL DE OPERACIÓN 26/03/2008

Instalación Software Administrador de Videoclub

Instrucciones de instalación de IBM SPSS Modeler Server 16 para Windows

Acceso a BDs en Java: JDBC

U.A.B.C. - Facultad de Ingeniería Carrera de Ingeniero en Computación Como Hacer un JSP con JBoss y Eclipse

Transcripción:

Ejemplos de sockets Los sockets son un mecanismo de comunicación entre procesos de muy bajo nivel, donde el usuario tiene que hacer muchas cosas, pero que siguen siendo muy importantes. En esta práctica se muestran dos implementaciones. El socket servidor va en un proceso y el cliente (o clientes) en otros. Cada proceso puede estar en una máquina diferente o pueden compartir la computadora. Cuando el servidor está en la misma máquina del cliente, se usa url= localhost o 127.0.0.0. Cuando está en otra máquina se usa su nombre o dirección IP. En el centro de cómputo las direcciones corresponden a la cuadrícula de numeración de máquinas, como por ejemplo E12. Para los dos casos que siguen, primero cargue las dos clases en un proyecto. Colóquese en el servidor y mándelo a correr usando localhost. Luego cambie al cliente y láncelo. Alternativamente use dos copias de Eclipse o extraiga el servidor y láncelo desde MSDOS (ver al final). Luego lleve el cliente a otra máquina y ejecute desde ahí usando el nombre de la máquina del servidor. Ejemplo 1. public class ServidorTCP { String lin, maylin; try{ int port =1234; ServerSocket welcome = new ServerSocket(port); while (true){ System.out.println("Esperando solicitudes en puerto "+port); Socket conecta = welcome.accept(); //espera que alguien quiera conectarse System.out.println("Conectado a "+conecta.getinetaddress()+":"+conecta.getport()); BufferedReader entra = new BufferedReader( new InputStreamReader(conecta.getInputStream())); DataOutputStream sale = new DataOutputStream(conecta.getOutputStream()); lin = entra.readline(); while (lin!= null){ System.out.println("Recibido: "+lin); maylin = lin.touppercase()+"\n"; sale.writebytes(maylin); lin = entra.readline();

catch(exception e){e.printstacktrace(); public class ClienteTCP { String lin, maylin, host; int port; try{ System.out.println("args 0: "+args[0]+" args 1: "+args[1]); port =Integer.parseInt(args[1]); host = args[0]; catch (Exception e){ System.out.println("Como hubo problemas en parámetros, usamos el localhost"); host="localhost"; port = 1234; try{ BufferedReader consola = new BufferedReader(new InputStreamReader(System.in)); Socket cliente = new Socket(host, port); DataOutputStream sale = new DataOutputStream(cliente.getOutputStream()); BufferedReader entra = new BufferedReader( new InputStreamReader(cliente.getInputStream())); System.out.print("Deme mensaje:"); System.out.flush(); lin = consola.readline(); while (!lin.equals(".")){

sale.writebytes(lin+"\n"); maylin = entra.readline(); System.out.println("Recibido: "+maylin); System.out.print("Deme mensaje:"); System.out.flush(); lin = consola.readline(); cliente.close(); catch(exception e){e.printstacktrace(); Desde el cliente, después de establecer contacto, se escriben líneas de texto que recibirá el servidor Ejemplo 2 public class RemoteFileServer { protected int listenport = 3000; private boolean alto = false; System.out.println("Servidor de sockets: main"); RemoteFileServer server = new RemoteFileServer(); server.acceptconnections(); public void acceptconnections() { System.out.println("Servidor de sockets: inicia accept"); ServerSocket server = new ServerSocket(listenPort); Socket incomingconnection = null; while (!alto) { System.out.println("Servidor de sockets: ciclo accept");

incomingconnection = server.accept(); handleconnection(incomingconnection); catch (BindException e) { System.out.println("Unable to bind to port " + listenport); catch (IOException e) { System.out.println("Unable to instantiate a ServerSocket on port: " + listenport); public void handleconnection(socket incomingconnection) { System.out.println("Servidor de sockets: handle inicia"); System.out.println("Servidor de sockets: handle creará archivos"); OutputStream outputtosocket = incomingconnection.getoutputstream(); InputStream inputfromsocket = incomingconnection.getinputstream(); BufferedReader streamreader = new BufferedReader(new InputStreamReader(inputFromSocket)); FileReader filereader = new FileReader(new File(streamReader.readLine())); BufferedReader bufferedfilereader = new BufferedReader(fileReader); PrintWriter streamwriter = new PrintWriter(incomingConnection.getOutputStream()); String line = null; System.out.println("Servidor de sockets: handle maneja texto"); while ((line = bufferedfilereader.readline())!= null) { streamwriter.println(line); System.out.println("Recibí: "+line); if (line.equals("alto")){ System.out.println("Me mandan parar"); alto=true; break;

filereader.close(); streamwriter.close(); streamreader.close(); catch (Exception e) { System.out.println("Error handling a client: " + e); public class RemoteFileClient { protected String hostip; protected int hostport; protected BufferedReader socketreader; protected PrintWriter socketwriter; public RemoteFileClient(String ahostip, int ahostport) { hostip = ahostip; hostport = ahostport; RemoteFileClient remotefileclient = new RemoteFileClient("localhost", 3000); //"127.0.0.1" remotefileclient.setupconnection(); String filecontents = remotefileclient.getfile("remotefile.txt"); //"C:\\WINNT\\Temp\\RemoteFile.txt" remotefileclient.teardownconnection(); System.out.println(fileContents); public void setupconnection() { Socket client = new Socket(hostIp, hostport); socketreader = new BufferedReader(

new InputStreamReader(client.getInputStream())); socketwriter = new PrintWriter(client.getOutputStream()); catch (UnknownHostException e) { System.out.println("Error setting up socket connection: unknown host at " + hostip); catch (IOException e) { System.out.println("Error setting up socket connection: " + e); public String getfile(string filenametoget) { StringBuffer filelines = new StringBuffer(); socketwriter.println(filenametoget); socketwriter.flush(); String line = null; while ((line = socketreader.readline())!= null) filelines.append(line + "\n"); catch (IOException e) { System.out.println("Error reading from file: " + filenametoget); return filelines.tostring(); public void teardownconnection() { socketwriter.close(); socketreader.close(); catch (IOException e) { System.out.println("Error tearing down socket connection: " + e); En la raíz del proyecto de la máquina donde esté el servidfor, crear un archivo RemoteFile.txt y escriba lo que quiera. En la última línea escriba la palabra ALTO

Nota: para hacer ejecutables los programas desarrollados en Eclipse, construya una jarra como sigue: 1. Asegúrese que el programa no tiene errores y de Save All 2. Vaya al menú File y elija Export; Si aparece Java Runnable JAR File haga clic; si no, de clic en la opción Java y luego en la de Runnable Jar. Haga clic en Next. 3. En launch configuration elija el proyecto y la clase donde está el main que le interesa. (Clase principal) 4. En export destination elija el folder donde desea le dejen la jarra y anote el nombre con que se ejecutará (suponer LaJarra ) 5. De Finish 6. En el folder indicado, puede ejecutar el archivo LaJarra.jar dando doble clic. Sólo sirve si no usa la consola. 7. Otra forma es entrar a MSDOS y cambiar al folder donde está la jarra y ahí lanzarla como java jar LaJarra.jar 8. Si hay archivos auxiliares en la raíz del proyecto, deben colocarse en la misma carpeta de la jarra. Las jarras son como archivos compactados que pueden abrirse con zip, 7zip o winrar. Existe un plugin FatJar que permite elegir mejor las opciones de ejecución. También existe la opción estándar de Sun/Oracle, pero no es muy buena.