SlideShare una empresa de Scribd logo
EJEMPLOS PROGRAMACIÓN SOCKET - JAVA 
1.- Calcular el Cuadrado –TCP 
En esta aplicación el cliente se conecta al servidor, para ello debe introducir la dirección IP del servidor y los parámetros sobre los cuales el servidor debe hacer las operaciones. Una vez conectado con el servidor este toma los parámetros y calcula su cuadrado y lo imprime por pantalla. Posteriormente envía los resultados al cliente, el cual también los imprime por pantalla. 
En esta aplicación la conexión se realiza mediante conexión TCP, lo que permite al cliente y al servidor disponer de un stream que facilita una comunicación libre de errores. 
El comportamiento para usar este tipo de socket es diferente en el cliente y el servidor. Cada uno de ellos utilizará unos métodos distintos. El esquema básico pasa por suponer que el servidor adoptará un papel pasivo y procederá a esperar conexiones de los posibles clientes. Mientras que los clientes serán los encargados de solicitar conexiones a los servidores de forma activa. 
Código de ClienteTCP.java 
En primer lugar se determina la dirección IP del host a partir de un string representando su dirección IP. 
Creamos el socket, extraemos los flujos de entrada y salida, los escribimos y leemos el resultado final devuelto por el servidor, y lo imprimimos en pantalla. 
Finalmente cerramos los flujos y el socket. 
//ClienteTCP.java 
import java.io.*; 
import java.net.*; 
class ClienteTCP 
{ 
public static void main(String args[]) 
{ 
// Leemos el primer parámetro, donde debe ir la dirección 
// IP del servidor 
InetAddress direcc = null; 
try 
{ 
direcc = InetAddress.getByName(args[0]); 
} 
catch(UnknownHostException uhe) 
{ 
System.err.println("Host no encontrado : " + uhe); 
System.exit(-1); 
} 
// Puerto que hemos usado para el servidor 
int puerto = 1234;
// Para cada uno de los argumentos... 
for (int n=1;n<args.length;n++) 
{ 
Socket sckt = null; 
DataInputStream dis = null; 
DataOutputStream dos = null; 
try 
{ 
// Convertimos el texto en número 
int numero = Integer.parseInt(args[n]); 
// Creamos el Socket 
sckt = new Socket(direcc,puerto); 
// Extraemos los streams de entrada y salida 
dis = new DataInputStream(sckt.getInputStream()); 
dos = new DataOutputStream(sckt.getOutputStream()); 
// Lo escribimos 
dos.writeInt(numero); 
// Leemos el resultado final 
long resultado = dis.readLong(); 
// Indicamos en pantalla 
System.out.println( "Solicitud = " + numero + "tResultado = " +resultado ); 
// y cerramos los streams y el socket 
dis.close(); 
dos.close(); 
} 
catch(Exception e) 
{ 
System.err.println("Se ha producido la excepción : " +e); 
} 
try 
{ 
if (sckt!=null) sckt.close(); 
} 
catch(IOException ioe) 
{ 
System.err.println("Error al cerrar el socket : " + ioe); 
} 
} 
} 
} 
Código de ServidorTCP.java 
Primero se obtiene la dirección IP del servidor, abrimos un socket del servidor TCP en el puerto 1234, esperamos a que alguien se conecte a nuestro socket, una vez conectado el cliente extraemos los flujos de entrada y salida a través del puerto remoto y realizamos la operación del cuadrado y enviaremos el resultado al cliente. Luego se escribe ese resultado en la pantalla de servidor y se cierran los flujos.
//ServidorTCP.java 
import java.io.*; 
import java.net.*; 
class ServidorTCP 
{ 
public static void main(String args[]) 
{ 
// Primero indicamos la dirección IP local 
try 
{ 
System.out.println("LocalHost = " + InetAddress.getLocalHost().toString()); 
} 
catch (UnknownHostException uhe) 
{ 
System.err.println("No puedo saber la dirección IP local : " + uhe); 
} 
// Abrimos un "Socket de Servidor" TCP en el puerto 1234. 
ServerSocket ss = null; 
try 
{ 
ss = new ServerSocket(1234); 
} 
catch (IOException ioe) 
{ 
System.err.println("Error al abrir el socket de servidor : " + ioe); 
System.exit(-1); 
} 
int entrada; 
long salida; 
// Bucle infinito 
while(true) 
{ 
try 
{ 
// Esperamos a que alguien se conecte a nuestro Socket 
Socket sckt = ss.accept(); 
// Extraemos los Streams de entrada y de salida 
DataInputStream dis = new 
DataInputStream(sckt.getInputStream()); 
DataOutputStream dos = new DataOutputStream(sckt.getOutputStream()); 
// Podemos extraer información del socket 
// Nº de puerto remoto 
int puerto = sckt.getPort(); 
// Dirección de Internet remota 
InetAddress direcc = sckt.getInetAddress(); 
// Leemos datos de la peticion 
entrada = dis.readInt(); 
// Calculamos resultado 
salida = (long)entrada*(long)entrada; 
// Escribimos el resultado 
dos.writeLong(salida); 
// Cerramos los streams 
dis.close(); 
dos.close();
sckt.close(); 
// Registramos en salida estandard 
System.out.println( "Cliente = " + direcc + ":" + puerto 
+ "tEntrada = " + entrada + "tSalida = " + salida ); 
} 
catch(Exception e) 
{ 
System.err.println("Se ha producido la excepción : " +e); 
} 
} 
} 
} 
2.- Calcular el Cuadrado –UDP 
En esta aplicación el cliente envía un paquete al servidor, para ello debe introducir la dirección IP del servidor y los parámetros sobre los cuales el servidor debe hacer las operaciones. Una vez enviado el paquete al servidor este toma los parámetros y calcula su cuadrado y lo imprime por pantalla. Posteriormente el servidor envía un paquete con los resultados al cliente con la dirección IP y el puerto del cliente obtenidos anteriormente, el cual también los imprime por pantalla. 
En este caso se trata de un mecanismo más simple, puesto que el servicio sin conexión tan sólo nos ofrece un mero envío de datos. Puesto que no existe aquí la conexión no hay proceso previo alguno antes de enviar información. Para poder comunicar con otro proceso lo único que hay que hacer es crear el socket y utilizar sus métodos para el envío y recepción de información. 
Código de clienteUDP.java 
En primer lugar se determina la dirección IP del host a partir de un string representando su dirección IP. 
Se construye un socket para datagramas y lo “conecta” al primer puerto disponible. 
Creamos un paquete con los datos y lo enviamos al servidor, preparemos un buffer para recibir los datos enviados por el servidor, creamos el contenedor del paquete y lo recibimos, creamos un stream de lectura a partir del buffer, leemos el resultado final y lo imprimimos en pantalla.
//clienteUDP.java 
import java.net.*; 
import java.io.*; 
class clienteUDP 
{ 
public static void main(String args[]) 
{ 
// Leemos el primer parámetro, donde debe ir la dirección 
// IP del servidor 
InetAddress direcc = null; 
try 
{ 
direcc = InetAddress.getByName(args[0]); 
} 
catch(UnknownHostException uhe) 
{ 
System.err.println("Host no encontrado : " + uhe); 
System.exit(-1); 
} 
// Puerto que hemos usado para el servidor 
int puerto = 1234; 
// Creamos el Socket 
DatagramSocket ds = null; 
try 
{ 
ds = new DatagramSocket(); 
} 
catch(SocketException se) 
{ 
System.err.println("Error al abrir el socket : " + se); 
System.exit(-1); 
} 
// Para cada uno de los argumentos... 
for (int n=1;n<args.length;n++) 
{ 
try 
{ 
//creamos un buffer para escribir 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
DataOutputStream dos = new DataOutputStream(baos); 
// Convertimos el texto en número 
int numero = Integer.parseInt(args[n]); 
// Lo escribimos 
dos.writeInt(numero); 
// y cerramos el buffer 
dos.close(); 
// Creamos paquete 
DatagramPacket dp = new DatagramPacket(baos.toByteArray(),4,direcc,puerto); 
// y lo mandamos 
ds.send(dp); 
// Preparamos buffer para recibir número de 8 bytes 
byte bufferEntrada[] = new byte[8]; 
// Creamos el contenedor del paquete 
dp = new DatagramPacket(bufferEntrada,8);
// y lo recibimos 
ds.receive(dp); 
// Creamos un stream de lectura a partir del buffer 
ByteArrayInputStream bais = new ByteArrayInputStream(bufferEntrada); 
DataInputStream dis = new DataInputStream(bais); 
// Leemos el resultado final 
long resultado = dis.readLong(); 
// Indicamos en pantalla 
System.out.println( "Solicitud = " + numero + "tResultado = " +resultado ); 
} 
catch (Exception e) 
{ 
System.err.println("Se ha producido un error : " + e); 
} 
} 
} 
} 
Código de servidorUDP.java 
Primero se obtiene la dirección IP del servidor, abrimos un socket UDP en el puerto 1234, a través de este socket enviaremos los datagramas, crearemos un contenedor de datagrama, cuyo buffer será un array, esperamos a recibir un paquete, extraemos la información del paquete recibido por parte de algún cliente, obtenemos el puerto y la dirección IP del cliente desde donde se envió el paquete, obtenemos el resultado y generamos un paquete con dicho resultado para enviárselo al cliente que solicitó la operación, para el envío del paquete se utiliza la dirección IP y el puerto obtenidos anteriormente del datagrama enviado por el cliente, posteriormente el servidor imprimirá el resultado por pantalla. 
//servidorUDP.java 
import java.net.*; 
import java.io.*; 
class servidorUDP 
{ 
public static void main(String args[]) 
{ 
// Primero indicamos la dirección IP local 
try 
{ 
System.out.println("LocalHost = " + InetAddress.getLocalHost().toString()); 
} 
catch (UnknownHostException uhe) 
{ 
System.err.println("No puedo saber la dirección IP local :" + uhe); 
}
// Abrimos un Socket UDP en el puerto 1234. 
// A través de este Socket enviaremos datagramas del tipo DatagramPacket 
DatagramSocket ds = null; 
try 
{ 
ds = new DatagramSocket(1234); 
} 
catch(SocketException se) 
{ 
System.err.println("Se ha producido un error al abrir el socket : " + se); 
System.exit(-1); 
} 
// Bucle infinito 
while(true) 
{ 
try 
{ 
// Nos preparamos a recibir un número entero (32 bits = 4 bytes) 
byte bufferEntrada[] = new byte[4]; 
// Creamos un "contenedor" de datagrama, cuyo buffer 
// será el array creado antes 
DatagramPacket dp = new DatagramPacket(bufferEntrada,4); 
// Esperamos a recibir un paquete 
ds.receive(dp); 
// Podemos extraer información del paquete 
// Nº de puerto desde donde se envió 
int puerto = dp.getPort(); 
// Dirección de Internet desde donde se envió 
InetAddress direcc = dp.getAddress(); 
// "Envolvemos" el buffer con un ByteArrayInputStream... 
ByteArrayInputStream bais = new ByteArrayInputStream(bufferEntrada); 
// ... que volvemos a "envolver" con un DataInputStream 
DataInputStream dis = new DataInputStream(bais); 
// Y leemos un número entero a partir del array de bytes 
int entrada = dis.readInt(); 
long salida = (long)entrada*(long)entrada; 
// Creamos un ByteArrayOutputStream sobre el que podamos escribir 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
// Lo envolvemos con un DataOutputStream 
DataOutputStream dos = new DataOutputStream(baos); 
// Escribimos el resultado, que debe ocupar 8 bytes 
dos.writeLong(salida); 
// Cerramos el buffer de escritura 
dos.close(); 
// Generamos el paquete de vuelta, usando los datos 
// del remitente del paquete original
dp = new 
DatagramPacket(baos.toByteArray(),8,direcc,puerto); 
// Enviamos 
ds.send(dp); 
// Registramos en salida estandard 
System.out.println( "Cliente = " + direcc + ":" + puerto + "tEntrada = " + 
entrada + "tSalida = " + salida ); 
} 
catch(Exception e) 
{ 
System.err.println("Se ha producido el error " + e); 
} 
} 
} 
}

Más contenido relacionado

La actualidad más candente

PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAPARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
Víctor Bolinches
 
Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.jubacalo
 
C documents and settings_pc10_configuración local_datos de programa_mozilla_...
C  documents and settings_pc10_configuración local_datos de programa_mozilla_...C  documents and settings_pc10_configuración local_datos de programa_mozilla_...
C documents and settings_pc10_configuración local_datos de programa_mozilla_...ORLANDO LOPEZ
 
Jose Selvi - Adaptando exploits para evitar la frustración [RootedSatellite V...
Jose Selvi - Adaptando exploits para evitar la frustración [RootedSatellite V...Jose Selvi - Adaptando exploits para evitar la frustración [RootedSatellite V...
Jose Selvi - Adaptando exploits para evitar la frustración [RootedSatellite V...
RootedCON
 
Nmap6 cheatsheet eng v1
Nmap6 cheatsheet eng v1Nmap6 cheatsheet eng v1
Nmap6 cheatsheet eng v1
DamianGreg
 
Montando un Servidor FreeNX en CentOS - Freenx-I - Instalación y Configuració...
Montando un Servidor FreeNX en CentOS - Freenx-I - Instalación y Configuració...Montando un Servidor FreeNX en CentOS - Freenx-I - Instalación y Configuració...
Montando un Servidor FreeNX en CentOS - Freenx-I - Instalación y Configuració...
rameses
 
Ucv sesion 13 router2
Ucv sesion 13 router2Ucv sesion 13 router2
Ucv sesion 13 router2Taringa!
 
Pablo sanemeteriovalencia
Pablo sanemeteriovalenciaPablo sanemeteriovalencia
Pablo sanemeteriovalencia
Pablo San Emeterio Lopez
 
GESTIÓN DE ACCESO REMOTO Y MONITORIZACIÓN DE SERVIDORES
GESTIÓN DE ACCESO REMOTO Y MONITORIZACIÓN DE SERVIDORESGESTIÓN DE ACCESO REMOTO Y MONITORIZACIÓN DE SERVIDORES
GESTIÓN DE ACCESO REMOTO Y MONITORIZACIÓN DE SERVIDORES
Carles Climent
 
OpenSSH
OpenSSHOpenSSH
OpenSSH
Alvaro Marin
 
Pecha kuchassh windows
Pecha kuchassh windowsPecha kuchassh windows
Pecha kuchassh windowsJavier Pérez
 
Tarea programacion web
Tarea programacion webTarea programacion web
Tarea programacion webErandi23
 
Tecnicas avanzadas de penetracion a sistemas
Tecnicas avanzadas de penetracion a sistemasTecnicas avanzadas de penetracion a sistemas
Tecnicas avanzadas de penetracion a sistemasRafael Seg
 
Cómo explotar EternalBlue en Windows Server 2012 R2
Cómo explotar EternalBlue en Windows Server 2012 R2Cómo explotar EternalBlue en Windows Server 2012 R2
Cómo explotar EternalBlue en Windows Server 2012 R2
Telefónica
 
José Ramón Palanco - NoSQL Security [RootedCON 2011]
José Ramón Palanco - NoSQL Security [RootedCON 2011]José Ramón Palanco - NoSQL Security [RootedCON 2011]
José Ramón Palanco - NoSQL Security [RootedCON 2011]RootedCON
 
Apache Storm: Desarrollo
Apache Storm: DesarrolloApache Storm: Desarrollo
Apache Storm: Desarrollo
Stratebi
 
Java scanner para lectura de datos
Java scanner para lectura de datosJava scanner para lectura de datos
Java scanner para lectura de datos
Flv Martín
 

La actualidad más candente (20)

PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAPARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
 
Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.
 
Curso Redes Linex 2
Curso Redes Linex 2Curso Redes Linex 2
Curso Redes Linex 2
 
C documents and settings_pc10_configuración local_datos de programa_mozilla_...
C  documents and settings_pc10_configuración local_datos de programa_mozilla_...C  documents and settings_pc10_configuración local_datos de programa_mozilla_...
C documents and settings_pc10_configuración local_datos de programa_mozilla_...
 
Jose Selvi - Adaptando exploits para evitar la frustración [RootedSatellite V...
Jose Selvi - Adaptando exploits para evitar la frustración [RootedSatellite V...Jose Selvi - Adaptando exploits para evitar la frustración [RootedSatellite V...
Jose Selvi - Adaptando exploits para evitar la frustración [RootedSatellite V...
 
Nmap6 cheatsheet eng v1
Nmap6 cheatsheet eng v1Nmap6 cheatsheet eng v1
Nmap6 cheatsheet eng v1
 
Montando un Servidor FreeNX en CentOS - Freenx-I - Instalación y Configuració...
Montando un Servidor FreeNX en CentOS - Freenx-I - Instalación y Configuració...Montando un Servidor FreeNX en CentOS - Freenx-I - Instalación y Configuració...
Montando un Servidor FreeNX en CentOS - Freenx-I - Instalación y Configuració...
 
Ucv sesion 13 router2
Ucv sesion 13 router2Ucv sesion 13 router2
Ucv sesion 13 router2
 
Pablo sanemeteriovalencia
Pablo sanemeteriovalenciaPablo sanemeteriovalencia
Pablo sanemeteriovalencia
 
GESTIÓN DE ACCESO REMOTO Y MONITORIZACIÓN DE SERVIDORES
GESTIÓN DE ACCESO REMOTO Y MONITORIZACIÓN DE SERVIDORESGESTIÓN DE ACCESO REMOTO Y MONITORIZACIÓN DE SERVIDORES
GESTIÓN DE ACCESO REMOTO Y MONITORIZACIÓN DE SERVIDORES
 
OpenSSH
OpenSSHOpenSSH
OpenSSH
 
Pecha kuchassh windows
Pecha kuchassh windowsPecha kuchassh windows
Pecha kuchassh windows
 
Tarea programacion web
Tarea programacion webTarea programacion web
Tarea programacion web
 
Tecnicas avanzadas de penetracion a sistemas
Tecnicas avanzadas de penetracion a sistemasTecnicas avanzadas de penetracion a sistemas
Tecnicas avanzadas de penetracion a sistemas
 
Cómo explotar EternalBlue en Windows Server 2012 R2
Cómo explotar EternalBlue en Windows Server 2012 R2Cómo explotar EternalBlue en Windows Server 2012 R2
Cómo explotar EternalBlue en Windows Server 2012 R2
 
José Ramón Palanco - NoSQL Security [RootedCON 2011]
José Ramón Palanco - NoSQL Security [RootedCON 2011]José Ramón Palanco - NoSQL Security [RootedCON 2011]
José Ramón Palanco - NoSQL Security [RootedCON 2011]
 
Apache Storm: Desarrollo
Apache Storm: DesarrolloApache Storm: Desarrollo
Apache Storm: Desarrollo
 
Ssh
SshSsh
Ssh
 
Ejercicio 1
Ejercicio 1Ejercicio 1
Ejercicio 1
 
Java scanner para lectura de datos
Java scanner para lectura de datosJava scanner para lectura de datos
Java scanner para lectura de datos
 

Destacado

Dibujo asistido 3°
Dibujo asistido 3°Dibujo asistido 3°
Dibujo asistido 3°Josue Lopez
 
Plataforma web de servicios multiples 5°
Plataforma web de servicios multiples 5°Plataforma web de servicios multiples 5°
Plataforma web de servicios multiples 5°Josue Lopez
 
Aplicacion cliente servidor
Aplicacion cliente servidorAplicacion cliente servidor
Aplicacion cliente servidor
Abel Rodriguez Carreon
 
Curso Java Avanzado 2 Servlets
Curso Java Avanzado   2 ServletsCurso Java Avanzado   2 Servlets
Curso Java Avanzado 2 Servlets
Emilio Aviles Avila
 
Manual Swing-Java-PostgreSQL
Manual Swing-Java-PostgreSQLManual Swing-Java-PostgreSQL
Manual Swing-Java-PostgreSQLpablo
 
63997661 tecnologia-cliente-servidor-con-java
63997661 tecnologia-cliente-servidor-con-java63997661 tecnologia-cliente-servidor-con-java
63997661 tecnologia-cliente-servidor-con-javaGilberto Garcia Zavaleta
 
Servlet
ServletServlet
Servlet
spcsliki62
 
Manual de Open Shift
Manual de Open ShiftManual de Open Shift
Manual de Open Shift
Eric Gustavo Coronel Castillo
 
Desarrollo de aplicaciones empresariales con Java EE
Desarrollo de aplicaciones empresariales con Java EEDesarrollo de aplicaciones empresariales con Java EE
Desarrollo de aplicaciones empresariales con Java EE
Fernando Montaño
 
Arquitectura Web
Arquitectura WebArquitectura Web
Arquitectura Web
Adolfo Sanz De Diego
 
PROGRAMACIÓN ORIENTADA A OBJETOS
PROGRAMACIÓN ORIENTADA A OBJETOSPROGRAMACIÓN ORIENTADA A OBJETOS
PROGRAMACIÓN ORIENTADA A OBJETOS
Eric Gustavo Coronel Castillo
 
Tema2: Tecnologías de desarrollo web (Desarrollo Aplicaciones Web)
Tema2: Tecnologías de desarrollo web (Desarrollo Aplicaciones Web)Tema2: Tecnologías de desarrollo web (Desarrollo Aplicaciones Web)
Tema2: Tecnologías de desarrollo web (Desarrollo Aplicaciones Web)
Micael Gallego
 
JAVA SERVER FACES - LECCION 03 - COMPONENTES HTML
JAVA SERVER FACES - LECCION 03 - COMPONENTES HTMLJAVA SERVER FACES - LECCION 03 - COMPONENTES HTML
JAVA SERVER FACES - LECCION 03 - COMPONENTES HTML
Eric Gustavo Coronel Castillo
 
JAVA SERVER FACES - LECCION 02 - NAVEGACION Y LENGUAJES DE EXPRESIONES
JAVA SERVER FACES - LECCION 02 - NAVEGACION Y LENGUAJES DE EXPRESIONESJAVA SERVER FACES - LECCION 02 - NAVEGACION Y LENGUAJES DE EXPRESIONES
JAVA SERVER FACES - LECCION 02 - NAVEGACION Y LENGUAJES DE EXPRESIONES
Eric Gustavo Coronel Castillo
 
SEMINARIO: ACCESO A BASE DE DATOS CON JDBC
SEMINARIO: ACCESO A BASE DE DATOS CON JDBCSEMINARIO: ACCESO A BASE DE DATOS CON JDBC
SEMINARIO: ACCESO A BASE DE DATOS CON JDBC
Eric Gustavo Coronel Castillo
 
Java web 01 - servlets
Java web 01 - servletsJava web 01 - servlets
Java web 01 - servlets
Eric Gustavo Coronel Castillo
 
Java Web Lección 02 - JSP
Java Web Lección 02 - JSPJava Web Lección 02 - JSP
Java Web Lección 02 - JSP
Eric Gustavo Coronel Castillo
 

Destacado (20)

T tema1
T tema1T tema1
T tema1
 
Dibujo asistido 3°
Dibujo asistido 3°Dibujo asistido 3°
Dibujo asistido 3°
 
Plataforma web de servicios multiples 5°
Plataforma web de servicios multiples 5°Plataforma web de servicios multiples 5°
Plataforma web de servicios multiples 5°
 
Aplicacion cliente servidor
Aplicacion cliente servidorAplicacion cliente servidor
Aplicacion cliente servidor
 
Curso Java Avanzado 2 Servlets
Curso Java Avanzado   2 ServletsCurso Java Avanzado   2 Servlets
Curso Java Avanzado 2 Servlets
 
Manual Swing-Java-PostgreSQL
Manual Swing-Java-PostgreSQLManual Swing-Java-PostgreSQL
Manual Swing-Java-PostgreSQL
 
63997661 tecnologia-cliente-servidor-con-java
63997661 tecnologia-cliente-servidor-con-java63997661 tecnologia-cliente-servidor-con-java
63997661 tecnologia-cliente-servidor-con-java
 
Curso Jsp
Curso JspCurso Jsp
Curso Jsp
 
Servlet
ServletServlet
Servlet
 
Manual de Open Shift
Manual de Open ShiftManual de Open Shift
Manual de Open Shift
 
Practica cliente servidor java
Practica cliente servidor javaPractica cliente servidor java
Practica cliente servidor java
 
Desarrollo de aplicaciones empresariales con Java EE
Desarrollo de aplicaciones empresariales con Java EEDesarrollo de aplicaciones empresariales con Java EE
Desarrollo de aplicaciones empresariales con Java EE
 
Arquitectura Web
Arquitectura WebArquitectura Web
Arquitectura Web
 
PROGRAMACIÓN ORIENTADA A OBJETOS
PROGRAMACIÓN ORIENTADA A OBJETOSPROGRAMACIÓN ORIENTADA A OBJETOS
PROGRAMACIÓN ORIENTADA A OBJETOS
 
Tema2: Tecnologías de desarrollo web (Desarrollo Aplicaciones Web)
Tema2: Tecnologías de desarrollo web (Desarrollo Aplicaciones Web)Tema2: Tecnologías de desarrollo web (Desarrollo Aplicaciones Web)
Tema2: Tecnologías de desarrollo web (Desarrollo Aplicaciones Web)
 
JAVA SERVER FACES - LECCION 03 - COMPONENTES HTML
JAVA SERVER FACES - LECCION 03 - COMPONENTES HTMLJAVA SERVER FACES - LECCION 03 - COMPONENTES HTML
JAVA SERVER FACES - LECCION 03 - COMPONENTES HTML
 
JAVA SERVER FACES - LECCION 02 - NAVEGACION Y LENGUAJES DE EXPRESIONES
JAVA SERVER FACES - LECCION 02 - NAVEGACION Y LENGUAJES DE EXPRESIONESJAVA SERVER FACES - LECCION 02 - NAVEGACION Y LENGUAJES DE EXPRESIONES
JAVA SERVER FACES - LECCION 02 - NAVEGACION Y LENGUAJES DE EXPRESIONES
 
SEMINARIO: ACCESO A BASE DE DATOS CON JDBC
SEMINARIO: ACCESO A BASE DE DATOS CON JDBCSEMINARIO: ACCESO A BASE DE DATOS CON JDBC
SEMINARIO: ACCESO A BASE DE DATOS CON JDBC
 
Java web 01 - servlets
Java web 01 - servletsJava web 01 - servlets
Java web 01 - servlets
 
Java Web Lección 02 - JSP
Java Web Lección 02 - JSPJava Web Lección 02 - JSP
Java Web Lección 02 - JSP
 

Similar a Ejemplos programacion socket java

Desarrollo aplicaciones distribuidas sockets
Desarrollo aplicaciones distribuidas socketsDesarrollo aplicaciones distribuidas sockets
Desarrollo aplicaciones distribuidas socketsdandark2000
 
Programacionclienteservidor
ProgramacionclienteservidorProgramacionclienteservidor
Programacionclienteservidor
wilmercampos4
 
Sockets en JAVA
Sockets en JAVASockets en JAVA
Sockets en JAVA
astrid de leon
 
Sistema de Mensajeria de Colas con ZeroMQ y Python
Sistema de Mensajeria de Colas con ZeroMQ y PythonSistema de Mensajeria de Colas con ZeroMQ y Python
Sistema de Mensajeria de Colas con ZeroMQ y PythonErnesto Crespo
 
Herramientas de red de los sistemas operativos
Herramientas de red de los sistemas operativosHerramientas de red de los sistemas operativos
Herramientas de red de los sistemas operativosyoes1053
 
Sockets UDP
Sockets UDPSockets UDP
Sockets en delphi
Sockets en delphiSockets en delphi
Sockets en delphi
jairoj2012
 
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPC
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPCEjemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPC
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPC
Ivan Luis Jimenez
 
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En RedesLw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
guest5d7f33c
 
Lw2010 Pedro Valera
Lw2010 Pedro ValeraLw2010 Pedro Valera
Lw2010 Pedro Valera
guestf280e2
 
1. Ingreso a las redes. Protocolos de internet
1. Ingreso a las redes. Protocolos de internet1. Ingreso a las redes. Protocolos de internet
1. Ingreso a las redes. Protocolos de internet
Edison Coimbra G.
 
Comunicacion Java Envio De Datos Al Puerto Paralelo
Comunicacion Java Envio De Datos Al Puerto ParaleloComunicacion Java Envio De Datos Al Puerto Paralelo
Comunicacion Java Envio De Datos Al Puerto Paralelo
Mauro Gomez Mejia
 
Programación web con JSP
Programación web con JSPProgramación web con JSP
Programación web con JSP
ousli07
 
Tema iv comunicación entre procesos
Tema iv comunicación entre procesosTema iv comunicación entre procesos
Tema iv comunicación entre procesos
Pablo Hurtado
 
Taller Sockets TCP UDP Multicast
Taller Sockets TCP UDP MulticastTaller Sockets TCP UDP Multicast
Taller Sockets TCP UDP Multicast
Hector L
 
Mikrotik ultimo manual
Mikrotik ultimo manual Mikrotik ultimo manual
Mikrotik ultimo manual
pattala01
 
Secuencia DORA del protocolo ARP analizado con wireshark
Secuencia DORA del protocolo ARP analizado con wiresharkSecuencia DORA del protocolo ARP analizado con wireshark
Secuencia DORA del protocolo ARP analizado con wireshark
123
 
Flisol Airacrack-ng
Flisol Airacrack-ng Flisol Airacrack-ng
Flisol Airacrack-ng
Web Developer
 

Similar a Ejemplos programacion socket java (20)

Desarrollo aplicaciones distribuidas sockets
Desarrollo aplicaciones distribuidas socketsDesarrollo aplicaciones distribuidas sockets
Desarrollo aplicaciones distribuidas sockets
 
Socket
SocketSocket
Socket
 
Programacionclienteservidor
ProgramacionclienteservidorProgramacionclienteservidor
Programacionclienteservidor
 
Sockets en JAVA
Sockets en JAVASockets en JAVA
Sockets en JAVA
 
Sistema de Mensajeria de Colas con ZeroMQ y Python
Sistema de Mensajeria de Colas con ZeroMQ y PythonSistema de Mensajeria de Colas con ZeroMQ y Python
Sistema de Mensajeria de Colas con ZeroMQ y Python
 
Herramientas de red de los sistemas operativos
Herramientas de red de los sistemas operativosHerramientas de red de los sistemas operativos
Herramientas de red de los sistemas operativos
 
Sockets UDP
Sockets UDPSockets UDP
Sockets UDP
 
Sockets en delphi
Sockets en delphiSockets en delphi
Sockets en delphi
 
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPC
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPCEjemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPC
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPC
 
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En RedesLw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
 
Lw2010 Pedro Valera
Lw2010 Pedro ValeraLw2010 Pedro Valera
Lw2010 Pedro Valera
 
Sockets
SocketsSockets
Sockets
 
1. Ingreso a las redes. Protocolos de internet
1. Ingreso a las redes. Protocolos de internet1. Ingreso a las redes. Protocolos de internet
1. Ingreso a las redes. Protocolos de internet
 
Comunicacion Java Envio De Datos Al Puerto Paralelo
Comunicacion Java Envio De Datos Al Puerto ParaleloComunicacion Java Envio De Datos Al Puerto Paralelo
Comunicacion Java Envio De Datos Al Puerto Paralelo
 
Programación web con JSP
Programación web con JSPProgramación web con JSP
Programación web con JSP
 
Tema iv comunicación entre procesos
Tema iv comunicación entre procesosTema iv comunicación entre procesos
Tema iv comunicación entre procesos
 
Taller Sockets TCP UDP Multicast
Taller Sockets TCP UDP MulticastTaller Sockets TCP UDP Multicast
Taller Sockets TCP UDP Multicast
 
Mikrotik ultimo manual
Mikrotik ultimo manual Mikrotik ultimo manual
Mikrotik ultimo manual
 
Secuencia DORA del protocolo ARP analizado con wireshark
Secuencia DORA del protocolo ARP analizado con wiresharkSecuencia DORA del protocolo ARP analizado con wireshark
Secuencia DORA del protocolo ARP analizado con wireshark
 
Flisol Airacrack-ng
Flisol Airacrack-ng Flisol Airacrack-ng
Flisol Airacrack-ng
 

Último

Conocemos la ermita de Ntra. Sra. del Arrabal
Conocemos la ermita de Ntra. Sra. del ArrabalConocemos la ermita de Ntra. Sra. del Arrabal
Conocemos la ermita de Ntra. Sra. del Arrabal
Profes de Relideleón Apellidos
 
CLASE N.1 ANÁLISIS ADMINISTRATIVO EMPRESARIAL presentación.pptx
CLASE N.1 ANÁLISIS ADMINISTRATIVO EMPRESARIAL presentación.pptxCLASE N.1 ANÁLISIS ADMINISTRATIVO EMPRESARIAL presentación.pptx
CLASE N.1 ANÁLISIS ADMINISTRATIVO EMPRESARIAL presentación.pptx
LilianaRivera778668
 
3° UNIDAD 3 CUIDAMOS EL AMBIENTE RECICLANDO EN FAMILIA 933623393 PROF YESSENI...
3° UNIDAD 3 CUIDAMOS EL AMBIENTE RECICLANDO EN FAMILIA 933623393 PROF YESSENI...3° UNIDAD 3 CUIDAMOS EL AMBIENTE RECICLANDO EN FAMILIA 933623393 PROF YESSENI...
3° UNIDAD 3 CUIDAMOS EL AMBIENTE RECICLANDO EN FAMILIA 933623393 PROF YESSENI...
rosannatasaycoyactay
 
Examen Lengua y Literatura EVAU Andalucía.pdf
Examen Lengua y Literatura EVAU Andalucía.pdfExamen Lengua y Literatura EVAU Andalucía.pdf
Examen Lengua y Literatura EVAU Andalucía.pdf
20minutos
 
Mapa_Conceptual de los fundamentos de la evaluación educativa
Mapa_Conceptual de los fundamentos de la evaluación educativaMapa_Conceptual de los fundamentos de la evaluación educativa
Mapa_Conceptual de los fundamentos de la evaluación educativa
TatianaVanessaAltami
 
PRÁCTICAS PEDAGOGÍA.pdf_Educación Y Sociedad_AnaFernández
PRÁCTICAS PEDAGOGÍA.pdf_Educación Y Sociedad_AnaFernándezPRÁCTICAS PEDAGOGÍA.pdf_Educación Y Sociedad_AnaFernández
PRÁCTICAS PEDAGOGÍA.pdf_Educación Y Sociedad_AnaFernández
Ruben53283
 
Portafolio de servicios Centro de Educación Continua EPN
Portafolio de servicios Centro de Educación Continua EPNPortafolio de servicios Centro de Educación Continua EPN
Portafolio de servicios Centro de Educación Continua EPN
jmorales40
 
corpus-christi-sesion-de-aprendizaje.pdf
corpus-christi-sesion-de-aprendizaje.pdfcorpus-christi-sesion-de-aprendizaje.pdf
corpus-christi-sesion-de-aprendizaje.pdf
YolandaRodriguezChin
 
Semana 10-TSM-del 27 al 31 de mayo 2024.pptx
Semana 10-TSM-del 27 al 31 de mayo 2024.pptxSemana 10-TSM-del 27 al 31 de mayo 2024.pptx
Semana 10-TSM-del 27 al 31 de mayo 2024.pptx
LorenaCovarrubias12
 
Un libro sin recetas, para la maestra y el maestro Fase 3.pdf
Un libro sin recetas, para la maestra y el maestro Fase 3.pdfUn libro sin recetas, para la maestra y el maestro Fase 3.pdf
Un libro sin recetas, para la maestra y el maestro Fase 3.pdf
sandradianelly
 
PPT: El fundamento del gobierno de Dios.
PPT: El fundamento del gobierno de Dios.PPT: El fundamento del gobierno de Dios.
PPT: El fundamento del gobierno de Dios.
https://gramadal.wordpress.com/
 
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
JAVIER SOLIS NOYOLA
 
1º GRADO CONCLUSIONES DESCRIPTIVAS PRIMARIA.docx
1º GRADO CONCLUSIONES DESCRIPTIVAS  PRIMARIA.docx1º GRADO CONCLUSIONES DESCRIPTIVAS  PRIMARIA.docx
1º GRADO CONCLUSIONES DESCRIPTIVAS PRIMARIA.docx
FelixCamachoGuzman
 
Horarios Exámenes EVAU Ordinaria 2024 de Madrid
Horarios Exámenes EVAU Ordinaria 2024 de MadridHorarios Exámenes EVAU Ordinaria 2024 de Madrid
Horarios Exámenes EVAU Ordinaria 2024 de Madrid
20minutos
 
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIALCUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
DivinoNioJess885
 
El fundamento del gobierno de Dios. Lec. 09. docx
El fundamento del gobierno de Dios. Lec. 09. docxEl fundamento del gobierno de Dios. Lec. 09. docx
El fundamento del gobierno de Dios. Lec. 09. docx
Alejandrino Halire Ccahuana
 
FICHA DE EJERCICIOS GRECIA 1º DE LA ESO HISTORIA
FICHA DE EJERCICIOS GRECIA 1º DE LA ESO HISTORIAFICHA DE EJERCICIOS GRECIA 1º DE LA ESO HISTORIA
FICHA DE EJERCICIOS GRECIA 1º DE LA ESO HISTORIA
JavierMontero58
 
FORTI-JUNIO 2024. CIENCIA, EDUCACION, CULTURA,pdf
FORTI-JUNIO 2024. CIENCIA, EDUCACION, CULTURA,pdfFORTI-JUNIO 2024. CIENCIA, EDUCACION, CULTURA,pdf
FORTI-JUNIO 2024. CIENCIA, EDUCACION, CULTURA,pdf
El Fortí
 
Varón de 30 años acude a consulta por presentar hipertensión arterial de reci...
Varón de 30 años acude a consulta por presentar hipertensión arterial de reci...Varón de 30 años acude a consulta por presentar hipertensión arterial de reci...
Varón de 30 años acude a consulta por presentar hipertensión arterial de reci...
HuallpaSamaniegoSeba
 
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIACONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
BetzabePecheSalcedo1
 

Último (20)

Conocemos la ermita de Ntra. Sra. del Arrabal
Conocemos la ermita de Ntra. Sra. del ArrabalConocemos la ermita de Ntra. Sra. del Arrabal
Conocemos la ermita de Ntra. Sra. del Arrabal
 
CLASE N.1 ANÁLISIS ADMINISTRATIVO EMPRESARIAL presentación.pptx
CLASE N.1 ANÁLISIS ADMINISTRATIVO EMPRESARIAL presentación.pptxCLASE N.1 ANÁLISIS ADMINISTRATIVO EMPRESARIAL presentación.pptx
CLASE N.1 ANÁLISIS ADMINISTRATIVO EMPRESARIAL presentación.pptx
 
3° UNIDAD 3 CUIDAMOS EL AMBIENTE RECICLANDO EN FAMILIA 933623393 PROF YESSENI...
3° UNIDAD 3 CUIDAMOS EL AMBIENTE RECICLANDO EN FAMILIA 933623393 PROF YESSENI...3° UNIDAD 3 CUIDAMOS EL AMBIENTE RECICLANDO EN FAMILIA 933623393 PROF YESSENI...
3° UNIDAD 3 CUIDAMOS EL AMBIENTE RECICLANDO EN FAMILIA 933623393 PROF YESSENI...
 
Examen Lengua y Literatura EVAU Andalucía.pdf
Examen Lengua y Literatura EVAU Andalucía.pdfExamen Lengua y Literatura EVAU Andalucía.pdf
Examen Lengua y Literatura EVAU Andalucía.pdf
 
Mapa_Conceptual de los fundamentos de la evaluación educativa
Mapa_Conceptual de los fundamentos de la evaluación educativaMapa_Conceptual de los fundamentos de la evaluación educativa
Mapa_Conceptual de los fundamentos de la evaluación educativa
 
PRÁCTICAS PEDAGOGÍA.pdf_Educación Y Sociedad_AnaFernández
PRÁCTICAS PEDAGOGÍA.pdf_Educación Y Sociedad_AnaFernándezPRÁCTICAS PEDAGOGÍA.pdf_Educación Y Sociedad_AnaFernández
PRÁCTICAS PEDAGOGÍA.pdf_Educación Y Sociedad_AnaFernández
 
Portafolio de servicios Centro de Educación Continua EPN
Portafolio de servicios Centro de Educación Continua EPNPortafolio de servicios Centro de Educación Continua EPN
Portafolio de servicios Centro de Educación Continua EPN
 
corpus-christi-sesion-de-aprendizaje.pdf
corpus-christi-sesion-de-aprendizaje.pdfcorpus-christi-sesion-de-aprendizaje.pdf
corpus-christi-sesion-de-aprendizaje.pdf
 
Semana 10-TSM-del 27 al 31 de mayo 2024.pptx
Semana 10-TSM-del 27 al 31 de mayo 2024.pptxSemana 10-TSM-del 27 al 31 de mayo 2024.pptx
Semana 10-TSM-del 27 al 31 de mayo 2024.pptx
 
Un libro sin recetas, para la maestra y el maestro Fase 3.pdf
Un libro sin recetas, para la maestra y el maestro Fase 3.pdfUn libro sin recetas, para la maestra y el maestro Fase 3.pdf
Un libro sin recetas, para la maestra y el maestro Fase 3.pdf
 
PPT: El fundamento del gobierno de Dios.
PPT: El fundamento del gobierno de Dios.PPT: El fundamento del gobierno de Dios.
PPT: El fundamento del gobierno de Dios.
 
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
 
1º GRADO CONCLUSIONES DESCRIPTIVAS PRIMARIA.docx
1º GRADO CONCLUSIONES DESCRIPTIVAS  PRIMARIA.docx1º GRADO CONCLUSIONES DESCRIPTIVAS  PRIMARIA.docx
1º GRADO CONCLUSIONES DESCRIPTIVAS PRIMARIA.docx
 
Horarios Exámenes EVAU Ordinaria 2024 de Madrid
Horarios Exámenes EVAU Ordinaria 2024 de MadridHorarios Exámenes EVAU Ordinaria 2024 de Madrid
Horarios Exámenes EVAU Ordinaria 2024 de Madrid
 
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIALCUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
 
El fundamento del gobierno de Dios. Lec. 09. docx
El fundamento del gobierno de Dios. Lec. 09. docxEl fundamento del gobierno de Dios. Lec. 09. docx
El fundamento del gobierno de Dios. Lec. 09. docx
 
FICHA DE EJERCICIOS GRECIA 1º DE LA ESO HISTORIA
FICHA DE EJERCICIOS GRECIA 1º DE LA ESO HISTORIAFICHA DE EJERCICIOS GRECIA 1º DE LA ESO HISTORIA
FICHA DE EJERCICIOS GRECIA 1º DE LA ESO HISTORIA
 
FORTI-JUNIO 2024. CIENCIA, EDUCACION, CULTURA,pdf
FORTI-JUNIO 2024. CIENCIA, EDUCACION, CULTURA,pdfFORTI-JUNIO 2024. CIENCIA, EDUCACION, CULTURA,pdf
FORTI-JUNIO 2024. CIENCIA, EDUCACION, CULTURA,pdf
 
Varón de 30 años acude a consulta por presentar hipertensión arterial de reci...
Varón de 30 años acude a consulta por presentar hipertensión arterial de reci...Varón de 30 años acude a consulta por presentar hipertensión arterial de reci...
Varón de 30 años acude a consulta por presentar hipertensión arterial de reci...
 
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIACONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
 

Ejemplos programacion socket java

  • 1. EJEMPLOS PROGRAMACIÓN SOCKET - JAVA 1.- Calcular el Cuadrado –TCP En esta aplicación el cliente se conecta al servidor, para ello debe introducir la dirección IP del servidor y los parámetros sobre los cuales el servidor debe hacer las operaciones. Una vez conectado con el servidor este toma los parámetros y calcula su cuadrado y lo imprime por pantalla. Posteriormente envía los resultados al cliente, el cual también los imprime por pantalla. En esta aplicación la conexión se realiza mediante conexión TCP, lo que permite al cliente y al servidor disponer de un stream que facilita una comunicación libre de errores. El comportamiento para usar este tipo de socket es diferente en el cliente y el servidor. Cada uno de ellos utilizará unos métodos distintos. El esquema básico pasa por suponer que el servidor adoptará un papel pasivo y procederá a esperar conexiones de los posibles clientes. Mientras que los clientes serán los encargados de solicitar conexiones a los servidores de forma activa. Código de ClienteTCP.java En primer lugar se determina la dirección IP del host a partir de un string representando su dirección IP. Creamos el socket, extraemos los flujos de entrada y salida, los escribimos y leemos el resultado final devuelto por el servidor, y lo imprimimos en pantalla. Finalmente cerramos los flujos y el socket. //ClienteTCP.java import java.io.*; import java.net.*; class ClienteTCP { public static void main(String args[]) { // Leemos el primer parámetro, donde debe ir la dirección // IP del servidor InetAddress direcc = null; try { direcc = InetAddress.getByName(args[0]); } catch(UnknownHostException uhe) { System.err.println("Host no encontrado : " + uhe); System.exit(-1); } // Puerto que hemos usado para el servidor int puerto = 1234;
  • 2. // Para cada uno de los argumentos... for (int n=1;n<args.length;n++) { Socket sckt = null; DataInputStream dis = null; DataOutputStream dos = null; try { // Convertimos el texto en número int numero = Integer.parseInt(args[n]); // Creamos el Socket sckt = new Socket(direcc,puerto); // Extraemos los streams de entrada y salida dis = new DataInputStream(sckt.getInputStream()); dos = new DataOutputStream(sckt.getOutputStream()); // Lo escribimos dos.writeInt(numero); // Leemos el resultado final long resultado = dis.readLong(); // Indicamos en pantalla System.out.println( "Solicitud = " + numero + "tResultado = " +resultado ); // y cerramos los streams y el socket dis.close(); dos.close(); } catch(Exception e) { System.err.println("Se ha producido la excepción : " +e); } try { if (sckt!=null) sckt.close(); } catch(IOException ioe) { System.err.println("Error al cerrar el socket : " + ioe); } } } } Código de ServidorTCP.java Primero se obtiene la dirección IP del servidor, abrimos un socket del servidor TCP en el puerto 1234, esperamos a que alguien se conecte a nuestro socket, una vez conectado el cliente extraemos los flujos de entrada y salida a través del puerto remoto y realizamos la operación del cuadrado y enviaremos el resultado al cliente. Luego se escribe ese resultado en la pantalla de servidor y se cierran los flujos.
  • 3. //ServidorTCP.java import java.io.*; import java.net.*; class ServidorTCP { public static void main(String args[]) { // Primero indicamos la dirección IP local try { System.out.println("LocalHost = " + InetAddress.getLocalHost().toString()); } catch (UnknownHostException uhe) { System.err.println("No puedo saber la dirección IP local : " + uhe); } // Abrimos un "Socket de Servidor" TCP en el puerto 1234. ServerSocket ss = null; try { ss = new ServerSocket(1234); } catch (IOException ioe) { System.err.println("Error al abrir el socket de servidor : " + ioe); System.exit(-1); } int entrada; long salida; // Bucle infinito while(true) { try { // Esperamos a que alguien se conecte a nuestro Socket Socket sckt = ss.accept(); // Extraemos los Streams de entrada y de salida DataInputStream dis = new DataInputStream(sckt.getInputStream()); DataOutputStream dos = new DataOutputStream(sckt.getOutputStream()); // Podemos extraer información del socket // Nº de puerto remoto int puerto = sckt.getPort(); // Dirección de Internet remota InetAddress direcc = sckt.getInetAddress(); // Leemos datos de la peticion entrada = dis.readInt(); // Calculamos resultado salida = (long)entrada*(long)entrada; // Escribimos el resultado dos.writeLong(salida); // Cerramos los streams dis.close(); dos.close();
  • 4. sckt.close(); // Registramos en salida estandard System.out.println( "Cliente = " + direcc + ":" + puerto + "tEntrada = " + entrada + "tSalida = " + salida ); } catch(Exception e) { System.err.println("Se ha producido la excepción : " +e); } } } } 2.- Calcular el Cuadrado –UDP En esta aplicación el cliente envía un paquete al servidor, para ello debe introducir la dirección IP del servidor y los parámetros sobre los cuales el servidor debe hacer las operaciones. Una vez enviado el paquete al servidor este toma los parámetros y calcula su cuadrado y lo imprime por pantalla. Posteriormente el servidor envía un paquete con los resultados al cliente con la dirección IP y el puerto del cliente obtenidos anteriormente, el cual también los imprime por pantalla. En este caso se trata de un mecanismo más simple, puesto que el servicio sin conexión tan sólo nos ofrece un mero envío de datos. Puesto que no existe aquí la conexión no hay proceso previo alguno antes de enviar información. Para poder comunicar con otro proceso lo único que hay que hacer es crear el socket y utilizar sus métodos para el envío y recepción de información. Código de clienteUDP.java En primer lugar se determina la dirección IP del host a partir de un string representando su dirección IP. Se construye un socket para datagramas y lo “conecta” al primer puerto disponible. Creamos un paquete con los datos y lo enviamos al servidor, preparemos un buffer para recibir los datos enviados por el servidor, creamos el contenedor del paquete y lo recibimos, creamos un stream de lectura a partir del buffer, leemos el resultado final y lo imprimimos en pantalla.
  • 5. //clienteUDP.java import java.net.*; import java.io.*; class clienteUDP { public static void main(String args[]) { // Leemos el primer parámetro, donde debe ir la dirección // IP del servidor InetAddress direcc = null; try { direcc = InetAddress.getByName(args[0]); } catch(UnknownHostException uhe) { System.err.println("Host no encontrado : " + uhe); System.exit(-1); } // Puerto que hemos usado para el servidor int puerto = 1234; // Creamos el Socket DatagramSocket ds = null; try { ds = new DatagramSocket(); } catch(SocketException se) { System.err.println("Error al abrir el socket : " + se); System.exit(-1); } // Para cada uno de los argumentos... for (int n=1;n<args.length;n++) { try { //creamos un buffer para escribir ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(baos); // Convertimos el texto en número int numero = Integer.parseInt(args[n]); // Lo escribimos dos.writeInt(numero); // y cerramos el buffer dos.close(); // Creamos paquete DatagramPacket dp = new DatagramPacket(baos.toByteArray(),4,direcc,puerto); // y lo mandamos ds.send(dp); // Preparamos buffer para recibir número de 8 bytes byte bufferEntrada[] = new byte[8]; // Creamos el contenedor del paquete dp = new DatagramPacket(bufferEntrada,8);
  • 6. // y lo recibimos ds.receive(dp); // Creamos un stream de lectura a partir del buffer ByteArrayInputStream bais = new ByteArrayInputStream(bufferEntrada); DataInputStream dis = new DataInputStream(bais); // Leemos el resultado final long resultado = dis.readLong(); // Indicamos en pantalla System.out.println( "Solicitud = " + numero + "tResultado = " +resultado ); } catch (Exception e) { System.err.println("Se ha producido un error : " + e); } } } } Código de servidorUDP.java Primero se obtiene la dirección IP del servidor, abrimos un socket UDP en el puerto 1234, a través de este socket enviaremos los datagramas, crearemos un contenedor de datagrama, cuyo buffer será un array, esperamos a recibir un paquete, extraemos la información del paquete recibido por parte de algún cliente, obtenemos el puerto y la dirección IP del cliente desde donde se envió el paquete, obtenemos el resultado y generamos un paquete con dicho resultado para enviárselo al cliente que solicitó la operación, para el envío del paquete se utiliza la dirección IP y el puerto obtenidos anteriormente del datagrama enviado por el cliente, posteriormente el servidor imprimirá el resultado por pantalla. //servidorUDP.java import java.net.*; import java.io.*; class servidorUDP { public static void main(String args[]) { // Primero indicamos la dirección IP local try { System.out.println("LocalHost = " + InetAddress.getLocalHost().toString()); } catch (UnknownHostException uhe) { System.err.println("No puedo saber la dirección IP local :" + uhe); }
  • 7. // Abrimos un Socket UDP en el puerto 1234. // A través de este Socket enviaremos datagramas del tipo DatagramPacket DatagramSocket ds = null; try { ds = new DatagramSocket(1234); } catch(SocketException se) { System.err.println("Se ha producido un error al abrir el socket : " + se); System.exit(-1); } // Bucle infinito while(true) { try { // Nos preparamos a recibir un número entero (32 bits = 4 bytes) byte bufferEntrada[] = new byte[4]; // Creamos un "contenedor" de datagrama, cuyo buffer // será el array creado antes DatagramPacket dp = new DatagramPacket(bufferEntrada,4); // Esperamos a recibir un paquete ds.receive(dp); // Podemos extraer información del paquete // Nº de puerto desde donde se envió int puerto = dp.getPort(); // Dirección de Internet desde donde se envió InetAddress direcc = dp.getAddress(); // "Envolvemos" el buffer con un ByteArrayInputStream... ByteArrayInputStream bais = new ByteArrayInputStream(bufferEntrada); // ... que volvemos a "envolver" con un DataInputStream DataInputStream dis = new DataInputStream(bais); // Y leemos un número entero a partir del array de bytes int entrada = dis.readInt(); long salida = (long)entrada*(long)entrada; // Creamos un ByteArrayOutputStream sobre el que podamos escribir ByteArrayOutputStream baos = new ByteArrayOutputStream(); // Lo envolvemos con un DataOutputStream DataOutputStream dos = new DataOutputStream(baos); // Escribimos el resultado, que debe ocupar 8 bytes dos.writeLong(salida); // Cerramos el buffer de escritura dos.close(); // Generamos el paquete de vuelta, usando los datos // del remitente del paquete original
  • 8. dp = new DatagramPacket(baos.toByteArray(),8,direcc,puerto); // Enviamos ds.send(dp); // Registramos en salida estandard System.out.println( "Cliente = " + direcc + ":" + puerto + "tEntrada = " + entrada + "tSalida = " + salida ); } catch(Exception e) { System.err.println("Se ha producido el error " + e); } } } }