SlideShare uma empresa Scribd logo
1 de 15
Baixar para ler offline
INSTITUTO TECNOLÓGICO DE CANCÚN


         INGENIERÍA MECATRÓNICA


                MATERIA:


          PROGRAMACIÓN BÁSICA


              INVESTIGACIÓN:

           USO DE APIS EN JAVA

          DE PUERTO (JAVA COM)

      MULTIMEDIA (JAVA FRAMEWORKS)

                SOCKET ()

               PROFESORA:


     MARÍA JACINTA MARTÍNEZ CASTILLO


                AUTORES:


   ALEJANDRO FIGUEROA ANDRÉS ALFONSO


         CUA MAY JOEL DE LA CRUZ


           MARTINEZ SOLIS ITZEL




CANCÚN QUINTANA ROO A 18 DE JUNIO DEL 2012
USO DE APIS EN JAVA

MÉTODO LENGTH DE LA CLASE STRING DEL API DE JAVA. EJEMPLO
DE USO DE MÉTODOS PARA EVITAR ERRORES.

Vamos a usar el método length de la clase String para tratar de evitar que nos
salten errores al emplear el método substring. Lo primero que haremos será
consultar la documentación de la clase, la signatura del método, y, si es
necesario, su detalle. La signatura del método es:




                          length()
                int                   Devuelve     el   número   de
                          caracteres del String.


 El tipo devuelto por el método es int (un entero) y el método no requiere
parámetros para ser ejecutado. El método no está sobrecargado, ya que hay
una única manera de invocarlo. Un ejemplo de invocación puede ser
NumCaracteres = micadena.length();. Recordar que siempre que invoquemos
un método hemos de incluir los paréntesis, independientemente de que sea
necesario pasar parámetros o no.

 Valiéndonos de este método, intenta escribir tu propio código para hacer lo
siguiente:

a)   Reescribir la clase Combinador que usamos anteriormente de forma que
el método combinacion devuelva “No aporta cadenas válidas” si se le pasa
como parámetro alguna cadena que contenga menos de tres caracteres.

b)     Escribir un nuevo método de la clase, al que podemos denominar
combinadoSiempre que en caso de que se pasen cadenas con menos de tres
caracteres, las combine de todas formas en base a los caracteres disponibles,
sea el número que sea.




                                                                             1
El código podría ser el siguiente

/* Ejemplo - aprenderaprogramar.com */

// Definición de una clase de ejemplo con uso del método length sobre objetos String
aprenderaprogramar.com

// Combina las tres primeras letras de dos textos introducidos por el usuario en una
sola cadena separada por un espacio

public class Combinador {



  private String texto1;

  private String texto2;

  public Combinador () { texto1 = ""; texto2 = ""; }



//Método que combina las tres primeras letras de cada cadena

  String Combinacion (String valor_texto1, String valor_texto2) {

     if (valor_texto1.length() >= 3 && valor_texto2.length() >= 3) { //Comprobación

        String combinacion = valor_texto1.substring (0, 3) + " " +
valor_texto2.substring (0 ,3);

       return combinacion;

     } else { return "No aporta cadenas válidas"; }

  } //Cierre del método



//Método que combina las cadenas aunque contengan menos de 3 caracteres (nuevo
método)

  String CombinadoSiempre (String valor_texto1, String valor_texto2) {

     int longitud_texto1 = 3; //Si podemos extraeremos tres caracteres

     int longitud_texto2 = 3;


                                                                                  2
String CombinadoSiempre = ""; //Cadena vacía, variable local

     if (valor_texto1.length() < 3) {     //Si hay menos de 3 caracteres extraemos
los que haya

         longitud_texto1 = valor_texto1.length();

     }

     if (valor_texto2.length() < 3) { longitud_texto2 = valor_texto2.length(); }

CombinadoSiempre = valor_texto1.substring (0,longitud_texto1)+" "+
valor_texto2.substring (0, longitud_texto2);

return CombinadoSiempre;

  } //Cierre del método



} //Cierre de la clase

   Recuerda que los espacios cuentan. No es lo mismo una cadena de longitud
   cero o cadena vacía, representada por dos comillas sin espacio entre ellas, que
   una cadena que contenga un espacio, representada por dos cadenas que
   contengan un espacio entre ellas, cuya longitud o número de caracteres es 1.




                                                                                   3
DE PUERTO (JAVA COM)
CONCEPTOS FUNDAMENTALES DE INTERRUPCIONES Y PUERTOS.

CONCEPTO DE INTERRUPCIÓN:

 Ya que un procesador no puede procesar simultáneamente varios trozos de
información (procesa un trozo de información por vez), un programa que está
siendo ejecutado puede, gracias al pedido de interrupción, ser
momentáneamente suspendido mientras se produce una interrupción.

 El programa interrumpido puede continuar ejecutándose luego. Existen 256
direcciones de interrupción diferentes.

 Una interrupción se convierte en una interrupción de hardware cuando es
solicitada por uno de los componentes de hardware del equipo. En efecto,
existen varios periféricos en un equipo. Estos periféricos necesitan
generalmente utilizar los recursos del sistema aunque sólo sea para
comunicarse con el sistema mismo.

 Cuando un periférico desea acceder a un recurso, envía un pedido de
interrupción al procesador para llamar su atención. Los periféricos cuentan con
un número de interrupción que se denomina IRQ (Peticiones de Interrupción.
Es como si cada periférico tirara de un “hilo” que está atado a una campana
para señalarle al equipo que desea que le preste atención.

 Este “hilo” es, de hecho, una línea física que conecta cada ranura de
expansión así como cada interfaz E/S a la placa madre. Para una ranura ISA
de 8 bits, por ejemplo, hay 8 líneas IRQ que unen ranuras ISA de 8 bits a la
placa madre (IRQ0 a IRQ7). Estos IRQ están controlados por un “controlador
de interrupción” que se encarga de “cederle la palabra” al IRQ que posee la
mayor prioridad.

{text:bookmark-start} {text:bookmark-end}

Los *métodos interrupt* que se manejan en Java. Son 3

 Interrupt()

   Interrupted()

   isInterrupted()

   Interrupciones Sintaxis

 Primero el método checkAccess de este thread es invocado, lo cual puede
causar una Security Exception.

                                                                               4
Si este thread es bloqueado en un selector, entonces el estado del thread de
intrrupt será fijado, y retornara inmediatamente de la operación de selección,
posiblemente con un valor diferente a cero, justo como si el método del selector
wakeup hubiera sido invocado.

 Si ninguna de las condiciones pasadas se cumple, entonces el estado en
interrupt del thread será fijado (activado).

Interrupted (interrumpido)

Sintaxis Public static boolean interrupted ()

 Hace una prueba si el thread actual a sido interrumpido. El estado de
interrupción del thread es deshecho por este método. En otras palabras, si este
método se llamara dos veces, la segunda vez devolvería un valor falso (al
menos que el thread actual sea interrumpido de nuevo, después de que la
primera llamada haya terminado su interrupción y antes de que la segunda
empiece).

Returns: Verdadero si el thread actual a sido interrumpido, falso de lo contrario



PUERTO SERIAL Y SUS VARIANTES

{draw:frame} Puerto serial, puerto COM, puerto de comunicaciones y puerto
RS-232(“Recomended Standard-232”), hacen referencia al mismo puerto.

 Es un conector que permite la transmisión de datos entre un dispositivo
externo (periférico), con la computadora; por ello es denominado puerto.

 Todos los sistemas operativos de los ordenadores que están en uso hoy en
día, soportan los puertos serie, ya que han estado en funcionamiento durante
décadas. Los puertos paralelos son una invención más reciente y son mucho
más rápidos que los puertos serie. Los puertos USB solo tienen unos pocos
años de antigüedad, y con el tiempo seguramente reemplazaran a los puertos
serie y paralelo en los próximos años.

 El nombre de serie viene por el hecho de que un puerto serie serializa los
datos. Esto significa que coge un byte de datos y trasmite los 8 bits que
contiene el byte uno a la vez. La ventaja es que los puertos serie solo necesitan
un hilo para transmitir los 8 bits, mientras que los paralelo necesitan 8. La
desventaja es que lleva 8 veces más de tiempo que si tuviera 8 hilos. Los
puertos serie bajan el coste de los cables y hacen que sean mas pequeños.

 Antes de cada byte de datos, los puertos serie envían un bit de comienzo, el
cual es un único bit con un valor de 0. Después de cada byte de datos, envía

                                                                                5
un bit de parada para señalar que el byte esta completo. También envía un bit
de paridad.

   Terminales eléctricas del puerto serial. El puerto serial cuenta con 9
contactos tipo pin, se muestran las líneas eléctricas y su descripción básica.

    Variantes físicas del puerto serial. Los puertos serie, también llamados
puertos de comunicación (COM), son bidireccionales. La comunicación
bidireccional permite a cada dispositivo recibir datos a la vez que los transmite.
Los dispositivos serie usan pines diferentes para el recibir y enviar datos, usar
los mismos pines significaría que la comunicación estaría limitada a half-
duplex, y que la información viajaría en una sola dirección a la vez. Usar pines
diferentes permite una comunicación full-dúplex, y puede viajar en ambos
sentidos.



PUERTO PARALELO Y SUS VARIANTES

 Definición: Un puerto es el lugar donde el CPU se comunica con otros
dispositivos, existen de varios tipos, hay puertos de entrada, de salida y ambos.
Además estos pueden ser seriales o paralelos.

 Puertos de salida: Son todos aquellos por donde el CPU envía datos a otros
dispositivos, por ejemplo están la salida de video y de sonido.

 Nosotros vamos a hablar acerca de los puertos que se encuentran fuera del
gabinete, hablaremos de los puertos de teclado, mouse, impresoras, etc. La
computadora por si misma no sería capaz de realizar operaciones útiles para
nosotros si no podemos comunicarnos con ella, necesita dispositivos
periféricos por donde pueda darnos mensajes y nosotros podamos enviarle
órdenes.

 Ahora bien, existen infinidad de dispositivos que sirven de extensión a la
computadora, muchos son para fines muy específicos y no se pueden abarcar,
entre los dispositivos que son de uso común se encuentra la impresora, el
teclado, el mouse y el monitor.

 Puerto serial: El puerto serial es aquel que envía y recibe los datos BIT por
BIT, entre los puertos seriales se puede mencionar el puerto de teclado, o el
puerto del MODEM.

 Puerto paralelo: Este tipo de puerto transmite la información byte por byte, o
sea que transmite ocho bits al mismo tiempo, de forma paralela. Un puerto
paralelo por excelencia pues es el puerto para impresora


                                                                                     6
Se puede observar que un puerto de entrada puede ser paralelo o serial, lo
mismo que un puerto de entrada o de entrada / salida.

 A cada puerto la BIOS le asigna una dirección de memoria para que pueda
trabajar, dependiendo de que clase de puerto sea se le asigna un determinado
espacio exclusivo para él. Por medio de estas localidades de memoria el
sistema puede enviarles o recibir información, es una especie de memoria de
intercambio para la transmisión de dados de un lugar a otro. A esto se le llama
espacio de localidades de memoria y se realiza dentro del primer kilo bite de la
memoria principal. Existen otras asignaciones de memoria en otras capas
superiores de memoria pero estas son hechas por el sistema operativo y por
los demás programas, pero estas asignaciones son para fines específicos de
los demás programas.

 Los puertos no solo se limitan a recibir la información, o enviarla, según sea el
caso. El puerto provee la corriente eléctrica necesaria para el funcionamiento
del dispositivo y revisa el estado de este.



INTERRUPCIONES QUE INTERVIENEN EN CADA PUNTO

 Una interrupción es un mecanismo que permite ejecutar un bloque de
instrucciones interrumpiendo la ejecución de un programa, y luego restablecer
la ejecución del mismo sin afectarlodirectamente. De este modo un programa
puede ser interrumpido temporalmente para atender alguna necesidad urgente
del computador y luego continuar su ejecución como si nada hubiera pasado.

 Generalmente se aplica para realizar tareas elementales asincrónicas en el
computador tales como responder al teclado, escribir en la pantalla, leer y
escribir archivos. Podemos considerar una tarea asincrónica como aquella que
es solicitada sin previo aviso y aleatoriamente desde el punto de vista del
computador. Tomemos el caso de la operación Ctrl-Alt-Supr. En Windows tiene
el efecto de que aparece en pantalla una lista de los procesos y ventanas en
ejecución en el computador. En cambio en el Sistema Operativo DOS cuando
el usuario presiona simultáneamente dichas teclas el computador procede a
reinicializarse, aunque pueda estar ocupado ejecutando un programa en ese
instante. Vale decir fuerza obligadamente a que el computador se reinicialice.
Ya sea en el sistema Windows o en DOS, el computador no está
constantemente monitoreando el teclado para ver si el usuario ha solicitado un
Ctrl-Alt-Del, ya que en ese caso consumiría mucho tiempo de proceso en ello y
por ende la capacidad de proceso se vería significativamente afectada. La
solución empleada es una interrupción.



                                                                                     7
Luego cada vez que el usuario presiona una tecla, la CPU es advertida a
través de una señal especial de interrupción. Cuando la CPU advierte/recibe
una señal de interrupción suspende temporalmente el proceso actual
almacenando en memoria RAMun bloque con toda la información necesaria
para restablecer posteriormente la ejecución del programa si es que procede.
Enseguida la CPU determina qué elemento ha solicitado la interrupción y para
cada caso existe un bloque de instrucciones que realiza la tarea
correspondiente que es ejecutada a continuación. Terminada la ejecución se
restablece el programa original en el mismo punto en que fue interrumpido
usando para ello la información almacenada previamente.

 Cada interrupción tiene asignada un número único. El PC está diseñado de
manera que la interrupción tiene asignada 4 bytes de memoria RAM. La
dirección de los cuatro bytes en la memoria corresponde al _número de la
_interrupción multiplicado por 4. Por ejemplo la interrupción IRQ 5 tiene
asignada 4 bytes en la dirección 0x00014 (0000:0014). El contenido de los 4
bytes de memoria RAM asignados a una interrupción contiene a su vez una
dirección que es un puntero a un bloque de instrucciones de máquina que
realiza el procedimiento correspondiente. De este modo al iniciar la ejecución
de una interrupción de los cuatro bytes que tiene asignados se obtiene la
dirección del bloque de instrucciones que efectivamente se ejecutan. Por
ejemplo si en la dirección 0000:0014 estuviera almacenado el valor 0xFFF00,
ello significa que en dicha dirección (ó (F000:FF00) se encuentra el bloque de
instrucciones a ejecutar cuando la interrupción IRQ 5 sea requerida.

 Esta forma de direccionamiento indirectopara las interrupciones brinda la
flexibilidad necesaria para perfeccionar, modificar y extender el código de
instrucciones correspondiente permitiendo mantener por ejemplo la
compatibilidad de las distintas versiones de BIOS con las aplicaciones y
equipos que usan las interrupciones.

Tipos de interrupciones

Existen tres tipos de interrupciones:

a) requeridas por hardware

Una lista de las interrupciones generadas por hardware es la siguiente

b) requerida por software para interactuar con periféricos

 Los vectores de las interrupciones BIOS están ubicados a partir del vector
0x10H, vale decir inmediatamente a continuación de los vectores 0 a15 que
son generados por hardware y que no son enmascarables. Cabe hacer notar
que la arquitectura del PC está definida de tal manera que el primer Kilobyte

                                                                                 8
del espacio de memoria está reservado para vectores de interrupciones, vale
decir hay espacio para 256 interrupciones.

Las interrupciones BIOS más importantes son las siguientes



ENVIÓ Y RECEPCIÓN DE DATOS

 Cuando se escriben programas Java que se comunican a través de la red, se
está programando en la capa de aplicación. Típicamente, no se necesita
trabajar con las capas TCP y UDP — en su lugar se puede utilizar las clases
del paquete java.net. Estas clases proporcionan comunicación de red
independiente del sistema.

 A través de las clases del paquete java.net, los programas Java puede utilizan
TCP o UDP para comunicarse a través de Internet. Las clases URL, URL
Connection, Socket, y Socket Server? Utilizan el TCP para comunicarse a
través de la Red. Las clases ? Y Datagram Server? Utilizan UDP.

 TCP proporciona un canal de comunicación fiable punto a punto, lo que utilizan
para comunicarse las aplicaciones cliente-servidor en Internet. Las clases
Socket y Server Socket del paquete java.net proporcionan un canal de
comunicación independiente del sistema utilizando TCP, cada una de las
cuales implementa el lado del cliente y el servidor respectivamente.

 La clase Socket del paquete java.net es una implementación independiente de
la plataforma de un cliente para un enlace de comunicación de dos vías entre
un cliente y un servidor. La clase Socket se sitúa en la parte superior de una
implementación dependiente de la plataforma, ocultando los detalles de los
sistemas particulares a un programa Java. Utilizando la clase java.net.Socket
en lugar de tratar con código nativo, los programas Java pueden comunicarse a
través de la red de una forma independiente de la plataforma.

 El entorno de desarrollo de Java incluye un paquete, java.io, que contiene un
juego de canales de entrada y salida que los programas pueden utilizar para
leer y escribir datos. Las clases Input Stream y Output Stream del paquete
java.io son superclases abstractas que definen el comportamiento de los
canales de I/O secuenciales de Java. java.io también incluye muchas
subclases de Input Stream y Output Stream que implementan tipos específicos
de canales de I/O.




                                                                                 9
BÁSICAMENTE DISPONEMOS DE DOS TIPOS DE SERVICIO:

 Servicio sin conexión, donde el emisor y el receptor intercambian paquetes de
información sin establecer una conexión previa, donde tampoco disponemos de
un control de secuencia ni control de errores. En este tipo de conexión
operamos con Datagramas y el protocolo empleado es UDP.

 Servicio orientado a conexión: Donde disponemos de un stream que nos
asegura la entrega de la información de forma ordenada y fiable. Operamos
con streams y el protocolo empleado es TCP

JAVA NOS DA SOPORTE PARA:

 getAddress() getAllByName(string) getByName(String) getHostAddress()
getHostName() getLocalHost() hashCode() isMulticastAddress() toString()

Envío y recepción de datos a través de sockets:

 El servidor crea un Socket, mediante Server Socket, le asigna una dirección y
un puerto y acepta llamadas (accept). A partir de este momento el proceso
queda bloqueado a la espera de una llamada. Cuando llega una llamada, el
accept crea un nuevo socket para procesar dicha llamada. Es únicamente en
ese momento cuando existe la conexión y durará hasta que se libere mediante
close().

 Los sockets tienen asociados un Stream de entrada y otro de salida a través
de los cuales se leen y escriben los datos:

 Para enviar datos se puede utilizar el Output Stream del socket, para enviar un
flujo de bytes sin buffer. Pero también se puede crear un objeto de tipo stream
de datos basado en el Output Stream.

_Socket socket = new Socket (“158.42.112.67″, 1056); _

_String linea; _

teclado_ = new Buffered Reader(new _Input Stream Reader?_(System.in)); _

escribir_ = new Print Writer(socket.getOutputStream(),true); _

do_ { _

linea_=teclado.readLine(); _

escribir.println_(linea); _

_} while (linea.compareTo(“#”)!=0); _

….
                                                                               10
Para recibir datos se puede utilizar Input Stream o definir un nuevo objeto del
mismo tipo más eficiente.

Ejemplo:

Buffered Reader leer;

String s;

 leer=_new Buffered Reader( new Input Stream Reader
(socketRecepcion.getInputStream() ) ); _

while_ (“#”.compareTo(s=leer.readLine()!=0) { _

System.out.println_(nombre+”: “+s); _

}

 THREADS: En el programa se pueden implementar varios hilos de ejcución o
threads. Podemos crear un servidor concurrente que ejecute el mismo código
para cada cliente. Para ello podemos implementar un servidor para un solo
cliente y dedicar un thread por cliente.

Implementando una nueva clase derivada de la clase Thread.

Creando una nueva clase que implemente el interface Runnable.

Import java.io.*;

Import java.net.*;

Class _Servidor Eco Tcp__ extends Thread { _

Socket s=null;

?_(Socket s) {this.s=s;} _

_Public void run() { _

_Try { Input Stream is=s.getInputStream(); _

Output Stream _os=s.getOutputStream(); _

While(_true) os.write(is.read()); _

} catch (IO Exception_ e) {__System.out.println(“Error en socket”);}} _

_Public static void main(String agrs[]) throws IO Exception , _Unknown Host
Exception?_ { _

_Server Socket ss=new Server Socket(7); _
                                                                                  11
While(true) {

_e.start(); _ } } }

 Existe otro tipo de socket, RAW SOCKET que no opera en el nivel de
transporte y accede directamente al nivel de red. Este tipo de socket suele ser
utilizado por aplicaciones con privilegios para la definición de protocolos de
bajo nivel.

{text:bookmark-start} Puertos y Servicios

 Cada servicio está asociado a un puerto. Un puerto es una dirección numérica
a través de la cual se procesa el servicio. Sobre un sistema Unix, los servicios
que proporciona ese sistema se indican en el fichero /etc/services, y algunos
ejemplos son:

 La primera columna indica el nombre del servicio. La segunda columna indica
el puerto y el protocolo que está asociado al servicio. La tercera columna es un
alias del servicio; por ejemplo, el servicio smtp, también conocido como mail, es
la implementación del servicio de correo electrónico.

 Las comunicaciones de información relacionada con Web tienen lugar a través
del puerto 80 mediante protocolo TCP. Para emular esto en Java, usaremos la
clase Socket. La fecha (daytime). Sin embargo, el servicio que coge la fecha y
la hora del sistema, está ligado al puerto 13 utilizando el protocolo UDP. Un
servidor que lo emule en Java usaría un objeto




                                                                               12
MULTIMEDIA (JAVA FRAMEWORKS)

APLICACIONES MULTIMEDIA

Una aplicación multimedia es aquella que produce, reproduce, procesa o
maneja uno o varios contenidos multimedia. A su vez un contenido multimedia
es aquel que está compuesto de diversos “medios”, como pueden ser audio,
video, texto, etc. Decimos que un contenido multimedia está basado en el
tiempo en tanto que cada uno de sus medios cambia significativamente con él.
Esta característica hace que un contenido multimedia requiera ser
proporcionado y procesado en unas condiciones temporales estrictas. Por
ejemplo cuando se reproduce un video, si los datos multimedia no pueden ser
proporcionados lo suficientemente rápido pueden producirse pausas y retardos
en la reproducción; por otro lado si los datos no pueden ser recibidos y
procesados lo suficientemente rápido el video se reproduce a saltos en tanto
que se desechan cuadros como medio para mantener la tasa de reproducción.

Cada uno de los medios de los que se compone un contenido multimedia se
denomina pista. Por ejemplo un contenido multimedia correspondiente a una
videoconferencia puede contener una pista de audio y otra de video. Se dice
que las pistas que componen un contenido multimedia están multiplexadas, al
proceso de extracción de las distintas pistas que componen un contenido
multimedia se le denomina demultiplexación. Existen distintos tipos de pistas
en función del tipo de datos que contienen, como audio y/o video; a su vez
cada pista posee un formato que define como están estructurados los datos
que forman parte de ella. Los distintos formatos se distinguen en función de:

• La calidad que proporcionan

• Su exigencia de recursos de CPU para ser procesados

• La cantidad de ancho de banda requerida para su transmisión

 Tabla 1 - Formatos multimedia soportados por JMF y sus características
Formato            Calidad            Uso CPU            Ancho de banda
Cinepak            Media              Bajo               Alto
MPEG 1             Alta               Alto               Alto
H.261              Baja               Medio              Medio
H.263              Media              Medio              Bajo
JPEG               Alta               Alto               Alto
Indeo              Media              Medio              Medio
PCM                Alta               Bajo               Alto
Mu-Law             Baja               Bajo               Alto
ADPCM (DVI, IMA) Media                Medio              Medio
MPEG 1             Alta               Alto               Alto
MPEG 1 Layer 3 Alta                   Alto               Medio
GSM                Baja               Bajo               Bajo
G.723.1            Media              Medio              Bajo

                                                                                13
Cada formato está destinado a diferentes tipos de aplicaciones y servicios.
Formatos como MPEG 1 de gran calidad pero altos requerimientos de ancho
de banda están destinados usualmente a aplicaciones que trabajan con
almacenamiento local o en dispositivos ópticos como CD-ROM o DVD donde el
ancho de banda y la capacidad de almacenamiento no son limitantes. En
cambio otros formatos como H.261 y H.263 se usan para aplicaciones de
videoconferencia donde el ancho de banda es un bien muy escaso; de la
misma forma G.723 se usa para producir voz codificada con tasa de bits
reducida para aplicaciones de telefonía IP por ejemplo.



FUENTES DE DATOS MULTIMEDIA

En Java Media Framework los datos multimedia pueden proceder de diversas
fuentes, como archivos locales o remotos y video y audio en tiempo real o bajo
demanda.

Una fuente de datos multimedia se modela mediante un objeto DataSource.
Podemos crear una DataSource directamente a través de una URL (Universal
Resource Locator) o bien mediante un objeto de tipo MediaLocator.

                                SOCKET ()

DEFINICIÓN DE SOCKET

Un socket (enchufe), es un método para la comunicación entre un programa del
cliente y un programa del servidor en una red. Un socket se define como el
punto final en una conexión. Los sockets se crean y se utilizan con un sistema
de peticiones o de llamadas de función a veces llamados interfaz de
programación de aplicación de sockets (API, application programming
interface).

Un socket es también una dirección de Internet, combinando una dirección IP
(la dirección numérica única de cuatro partes que identifica a un ordenador
particular en Internet) y un número de puerto (el número que identifica una
aplicación de Internet particular, como FTP, Gopher, o WWW).




                                                                              14

Mais conteúdo relacionado

Mais procurados

Gustavo 07 redes neuronales matlab
Gustavo 07   redes neuronales matlabGustavo 07   redes neuronales matlab
Gustavo 07 redes neuronales matlabWige Marr
 
Utp 2015-2_sirn_s6_adaline y backpropagation
 Utp 2015-2_sirn_s6_adaline y backpropagation Utp 2015-2_sirn_s6_adaline y backpropagation
Utp 2015-2_sirn_s6_adaline y backpropagationjcbenitezp
 
Utp ia_2014-2_s10_redes de funciones de base radial
 Utp ia_2014-2_s10_redes de funciones de base radial Utp ia_2014-2_s10_redes de funciones de base radial
Utp ia_2014-2_s10_redes de funciones de base radialjcbp_peru
 
Encriptación simétrica-AES Y RC2
Encriptación simétrica-AES Y RC2Encriptación simétrica-AES Y RC2
Encriptación simétrica-AES Y RC2Moisés Arévalo Sf
 
Utp 2015-2_ia_s4_red perceptron
 Utp 2015-2_ia_s4_red perceptron Utp 2015-2_ia_s4_red perceptron
Utp 2015-2_ia_s4_red perceptronjcbp_peru
 
Algoritmo de Retropropagación
Algoritmo de RetropropagaciónAlgoritmo de Retropropagación
Algoritmo de RetropropagaciónESCOM
 
Aprendiendo php 2
Aprendiendo php 2Aprendiendo php 2
Aprendiendo php 2Erick Trejo
 
Utp 2015-2_sirn lab2
 Utp 2015-2_sirn lab2 Utp 2015-2_sirn lab2
Utp 2015-2_sirn lab2jcbp_peru
 
Maquina de turing
Maquina de turing Maquina de turing
Maquina de turing CCCRiis
 
Implementacion de la funcion logica xor, mediante un modelo neuronal y el alg...
Implementacion de la funcion logica xor, mediante un modelo neuronal y el alg...Implementacion de la funcion logica xor, mediante un modelo neuronal y el alg...
Implementacion de la funcion logica xor, mediante un modelo neuronal y el alg...Tribunal Electoral Provincia de Misiones
 
Slides sesion8 matlab - IF y bucles
Slides sesion8 matlab - IF y buclesSlides sesion8 matlab - IF y bucles
Slides sesion8 matlab - IF y buclesmatlab_usc
 
Inteligencia Artificial - Leonys B
Inteligencia Artificial - Leonys BInteligencia Artificial - Leonys B
Inteligencia Artificial - Leonys BJose Andres
 
El Procesador o CPU 2
El Procesador o CPU 2El Procesador o CPU 2
El Procesador o CPU 2Jorge Pulido
 

Mais procurados (20)

Uso de hilos
Uso de hilosUso de hilos
Uso de hilos
 
Gustavo 07 redes neuronales matlab
Gustavo 07   redes neuronales matlabGustavo 07   redes neuronales matlab
Gustavo 07 redes neuronales matlab
 
Lab5 guia
Lab5 guiaLab5 guia
Lab5 guia
 
Networking
NetworkingNetworking
Networking
 
Utp 2015-2_sirn_s6_adaline y backpropagation
 Utp 2015-2_sirn_s6_adaline y backpropagation Utp 2015-2_sirn_s6_adaline y backpropagation
Utp 2015-2_sirn_s6_adaline y backpropagation
 
Hilos En Java
Hilos En JavaHilos En Java
Hilos En Java
 
Utp ia_2014-2_s10_redes de funciones de base radial
 Utp ia_2014-2_s10_redes de funciones de base radial Utp ia_2014-2_s10_redes de funciones de base radial
Utp ia_2014-2_s10_redes de funciones de base radial
 
Encriptación simétrica-AES Y RC2
Encriptación simétrica-AES Y RC2Encriptación simétrica-AES Y RC2
Encriptación simétrica-AES Y RC2
 
Utp 2015-2_ia_s4_red perceptron
 Utp 2015-2_ia_s4_red perceptron Utp 2015-2_ia_s4_red perceptron
Utp 2015-2_ia_s4_red perceptron
 
Algoritmo de Retropropagación
Algoritmo de RetropropagaciónAlgoritmo de Retropropagación
Algoritmo de Retropropagación
 
Aprendiendo php 2
Aprendiendo php 2Aprendiendo php 2
Aprendiendo php 2
 
Utp 2015-2_sirn lab2
 Utp 2015-2_sirn lab2 Utp 2015-2_sirn lab2
Utp 2015-2_sirn lab2
 
COMANDOS DE JAVA
COMANDOS DE JAVACOMANDOS DE JAVA
COMANDOS DE JAVA
 
Threads en Java
Threads en JavaThreads en Java
Threads en Java
 
Maquina de turing
Maquina de turing Maquina de turing
Maquina de turing
 
Implementacion de la funcion logica xor, mediante un modelo neuronal y el alg...
Implementacion de la funcion logica xor, mediante un modelo neuronal y el alg...Implementacion de la funcion logica xor, mediante un modelo neuronal y el alg...
Implementacion de la funcion logica xor, mediante un modelo neuronal y el alg...
 
Redes neuronales
Redes neuronalesRedes neuronales
Redes neuronales
 
Slides sesion8 matlab - IF y bucles
Slides sesion8 matlab - IF y buclesSlides sesion8 matlab - IF y bucles
Slides sesion8 matlab - IF y bucles
 
Inteligencia Artificial - Leonys B
Inteligencia Artificial - Leonys BInteligencia Artificial - Leonys B
Inteligencia Artificial - Leonys B
 
El Procesador o CPU 2
El Procesador o CPU 2El Procesador o CPU 2
El Procesador o CPU 2
 

Semelhante a Uso de apis en java

Sistemas operativos distribuidos ii
Sistemas operativos distribuidos iiSistemas operativos distribuidos ii
Sistemas operativos distribuidos iiMiguel Hernandez
 
Algunos estándares lulu
Algunos estándares luluAlgunos estándares lulu
Algunos estándares luluguest96b4d12
 
unidad 5conceptos basicos y configuracion del switch
unidad 5conceptos basicos y configuracion del switchunidad 5conceptos basicos y configuracion del switch
unidad 5conceptos basicos y configuracion del switchBrenda Betzii
 
Alugunos estandares antonio
Alugunos estandares antonioAlugunos estandares antonio
Alugunos estandares antonio2242424
 
Longitud de cadena y funciones en java
Longitud de cadena y funciones en javaLongitud de cadena y funciones en java
Longitud de cadena y funciones en javaRobert Wolf
 
Examen de robotica
Examen de roboticaExamen de robotica
Examen de roboticaJosDeLen17
 
estandares ieee 802
estandares ieee 802estandares ieee 802
estandares ieee 802edgarslm
 
Estandares ieee 802
Estandares ieee 802Estandares ieee 802
Estandares ieee 802edgarslm
 
Estandares ieee 802
Estandares ieee 802Estandares ieee 802
Estandares ieee 802edgarslm
 
Capitulo n2 redundancia de lan hoy ccna 2
Capitulo n2  redundancia de lan hoy ccna 2Capitulo n2  redundancia de lan hoy ccna 2
Capitulo n2 redundancia de lan hoy ccna 2Diego Caceres
 

Semelhante a Uso de apis en java (20)

Capa 2
Capa 2Capa 2
Capa 2
 
Capa 2
Capa 2Capa 2
Capa 2
 
Sirc0703
Sirc0703Sirc0703
Sirc0703
 
Sistemas operativos distribuidos ii
Sistemas operativos distribuidos iiSistemas operativos distribuidos ii
Sistemas operativos distribuidos ii
 
Algunos estándares lulu
Algunos estándares luluAlgunos estándares lulu
Algunos estándares lulu
 
unidad 5conceptos basicos y configuracion del switch
unidad 5conceptos basicos y configuracion del switchunidad 5conceptos basicos y configuracion del switch
unidad 5conceptos basicos y configuracion del switch
 
Alugunos estandares antonio
Alugunos estandares antonioAlugunos estandares antonio
Alugunos estandares antonio
 
Longitud de cadena y funciones en java
Longitud de cadena y funciones en javaLongitud de cadena y funciones en java
Longitud de cadena y funciones en java
 
Examen de robotica
Examen de roboticaExamen de robotica
Examen de robotica
 
Taller No.3
Taller No.3Taller No.3
Taller No.3
 
estandares ieee 802
estandares ieee 802estandares ieee 802
estandares ieee 802
 
Estandares ieee 802
Estandares ieee 802Estandares ieee 802
Estandares ieee 802
 
Estandares ieee 802
Estandares ieee 802Estandares ieee 802
Estandares ieee 802
 
Interconexión de redes
Interconexión de redesInterconexión de redes
Interconexión de redes
 
Ud3ethernet
Ud3ethernetUd3ethernet
Ud3ethernet
 
Redes
RedesRedes
Redes
 
Implementación de Aplicaciones Basadas en Texto
Implementación de Aplicaciones Basadas en TextoImplementación de Aplicaciones Basadas en Texto
Implementación de Aplicaciones Basadas en Texto
 
3. capa de enlace
3. capa de enlace3. capa de enlace
3. capa de enlace
 
Capitulo n2 redundancia de lan hoy ccna 2
Capitulo n2  redundancia de lan hoy ccna 2Capitulo n2  redundancia de lan hoy ccna 2
Capitulo n2 redundancia de lan hoy ccna 2
 
Practica4jpmstp
Practica4jpmstpPractica4jpmstp
Practica4jpmstp
 

Uso de apis en java

  • 1. INSTITUTO TECNOLÓGICO DE CANCÚN INGENIERÍA MECATRÓNICA MATERIA: PROGRAMACIÓN BÁSICA INVESTIGACIÓN: USO DE APIS EN JAVA DE PUERTO (JAVA COM) MULTIMEDIA (JAVA FRAMEWORKS) SOCKET () PROFESORA: MARÍA JACINTA MARTÍNEZ CASTILLO AUTORES: ALEJANDRO FIGUEROA ANDRÉS ALFONSO CUA MAY JOEL DE LA CRUZ MARTINEZ SOLIS ITZEL CANCÚN QUINTANA ROO A 18 DE JUNIO DEL 2012
  • 2. USO DE APIS EN JAVA MÉTODO LENGTH DE LA CLASE STRING DEL API DE JAVA. EJEMPLO DE USO DE MÉTODOS PARA EVITAR ERRORES. Vamos a usar el método length de la clase String para tratar de evitar que nos salten errores al emplear el método substring. Lo primero que haremos será consultar la documentación de la clase, la signatura del método, y, si es necesario, su detalle. La signatura del método es: length() int Devuelve el número de caracteres del String. El tipo devuelto por el método es int (un entero) y el método no requiere parámetros para ser ejecutado. El método no está sobrecargado, ya que hay una única manera de invocarlo. Un ejemplo de invocación puede ser NumCaracteres = micadena.length();. Recordar que siempre que invoquemos un método hemos de incluir los paréntesis, independientemente de que sea necesario pasar parámetros o no. Valiéndonos de este método, intenta escribir tu propio código para hacer lo siguiente: a) Reescribir la clase Combinador que usamos anteriormente de forma que el método combinacion devuelva “No aporta cadenas válidas” si se le pasa como parámetro alguna cadena que contenga menos de tres caracteres. b) Escribir un nuevo método de la clase, al que podemos denominar combinadoSiempre que en caso de que se pasen cadenas con menos de tres caracteres, las combine de todas formas en base a los caracteres disponibles, sea el número que sea. 1
  • 3. El código podría ser el siguiente /* Ejemplo - aprenderaprogramar.com */ // Definición de una clase de ejemplo con uso del método length sobre objetos String aprenderaprogramar.com // Combina las tres primeras letras de dos textos introducidos por el usuario en una sola cadena separada por un espacio public class Combinador { private String texto1; private String texto2; public Combinador () { texto1 = ""; texto2 = ""; } //Método que combina las tres primeras letras de cada cadena String Combinacion (String valor_texto1, String valor_texto2) { if (valor_texto1.length() >= 3 && valor_texto2.length() >= 3) { //Comprobación String combinacion = valor_texto1.substring (0, 3) + " " + valor_texto2.substring (0 ,3); return combinacion; } else { return "No aporta cadenas válidas"; } } //Cierre del método //Método que combina las cadenas aunque contengan menos de 3 caracteres (nuevo método) String CombinadoSiempre (String valor_texto1, String valor_texto2) { int longitud_texto1 = 3; //Si podemos extraeremos tres caracteres int longitud_texto2 = 3; 2
  • 4. String CombinadoSiempre = ""; //Cadena vacía, variable local if (valor_texto1.length() < 3) { //Si hay menos de 3 caracteres extraemos los que haya longitud_texto1 = valor_texto1.length(); } if (valor_texto2.length() < 3) { longitud_texto2 = valor_texto2.length(); } CombinadoSiempre = valor_texto1.substring (0,longitud_texto1)+" "+ valor_texto2.substring (0, longitud_texto2); return CombinadoSiempre; } //Cierre del método } //Cierre de la clase Recuerda que los espacios cuentan. No es lo mismo una cadena de longitud cero o cadena vacía, representada por dos comillas sin espacio entre ellas, que una cadena que contenga un espacio, representada por dos cadenas que contengan un espacio entre ellas, cuya longitud o número de caracteres es 1. 3
  • 5. DE PUERTO (JAVA COM) CONCEPTOS FUNDAMENTALES DE INTERRUPCIONES Y PUERTOS. CONCEPTO DE INTERRUPCIÓN: Ya que un procesador no puede procesar simultáneamente varios trozos de información (procesa un trozo de información por vez), un programa que está siendo ejecutado puede, gracias al pedido de interrupción, ser momentáneamente suspendido mientras se produce una interrupción. El programa interrumpido puede continuar ejecutándose luego. Existen 256 direcciones de interrupción diferentes. Una interrupción se convierte en una interrupción de hardware cuando es solicitada por uno de los componentes de hardware del equipo. En efecto, existen varios periféricos en un equipo. Estos periféricos necesitan generalmente utilizar los recursos del sistema aunque sólo sea para comunicarse con el sistema mismo. Cuando un periférico desea acceder a un recurso, envía un pedido de interrupción al procesador para llamar su atención. Los periféricos cuentan con un número de interrupción que se denomina IRQ (Peticiones de Interrupción. Es como si cada periférico tirara de un “hilo” que está atado a una campana para señalarle al equipo que desea que le preste atención. Este “hilo” es, de hecho, una línea física que conecta cada ranura de expansión así como cada interfaz E/S a la placa madre. Para una ranura ISA de 8 bits, por ejemplo, hay 8 líneas IRQ que unen ranuras ISA de 8 bits a la placa madre (IRQ0 a IRQ7). Estos IRQ están controlados por un “controlador de interrupción” que se encarga de “cederle la palabra” al IRQ que posee la mayor prioridad. {text:bookmark-start} {text:bookmark-end} Los *métodos interrupt* que se manejan en Java. Son 3 Interrupt() Interrupted() isInterrupted() Interrupciones Sintaxis Primero el método checkAccess de este thread es invocado, lo cual puede causar una Security Exception. 4
  • 6. Si este thread es bloqueado en un selector, entonces el estado del thread de intrrupt será fijado, y retornara inmediatamente de la operación de selección, posiblemente con un valor diferente a cero, justo como si el método del selector wakeup hubiera sido invocado. Si ninguna de las condiciones pasadas se cumple, entonces el estado en interrupt del thread será fijado (activado). Interrupted (interrumpido) Sintaxis Public static boolean interrupted () Hace una prueba si el thread actual a sido interrumpido. El estado de interrupción del thread es deshecho por este método. En otras palabras, si este método se llamara dos veces, la segunda vez devolvería un valor falso (al menos que el thread actual sea interrumpido de nuevo, después de que la primera llamada haya terminado su interrupción y antes de que la segunda empiece). Returns: Verdadero si el thread actual a sido interrumpido, falso de lo contrario PUERTO SERIAL Y SUS VARIANTES {draw:frame} Puerto serial, puerto COM, puerto de comunicaciones y puerto RS-232(“Recomended Standard-232”), hacen referencia al mismo puerto. Es un conector que permite la transmisión de datos entre un dispositivo externo (periférico), con la computadora; por ello es denominado puerto. Todos los sistemas operativos de los ordenadores que están en uso hoy en día, soportan los puertos serie, ya que han estado en funcionamiento durante décadas. Los puertos paralelos son una invención más reciente y son mucho más rápidos que los puertos serie. Los puertos USB solo tienen unos pocos años de antigüedad, y con el tiempo seguramente reemplazaran a los puertos serie y paralelo en los próximos años. El nombre de serie viene por el hecho de que un puerto serie serializa los datos. Esto significa que coge un byte de datos y trasmite los 8 bits que contiene el byte uno a la vez. La ventaja es que los puertos serie solo necesitan un hilo para transmitir los 8 bits, mientras que los paralelo necesitan 8. La desventaja es que lleva 8 veces más de tiempo que si tuviera 8 hilos. Los puertos serie bajan el coste de los cables y hacen que sean mas pequeños. Antes de cada byte de datos, los puertos serie envían un bit de comienzo, el cual es un único bit con un valor de 0. Después de cada byte de datos, envía 5
  • 7. un bit de parada para señalar que el byte esta completo. También envía un bit de paridad. Terminales eléctricas del puerto serial. El puerto serial cuenta con 9 contactos tipo pin, se muestran las líneas eléctricas y su descripción básica. Variantes físicas del puerto serial. Los puertos serie, también llamados puertos de comunicación (COM), son bidireccionales. La comunicación bidireccional permite a cada dispositivo recibir datos a la vez que los transmite. Los dispositivos serie usan pines diferentes para el recibir y enviar datos, usar los mismos pines significaría que la comunicación estaría limitada a half- duplex, y que la información viajaría en una sola dirección a la vez. Usar pines diferentes permite una comunicación full-dúplex, y puede viajar en ambos sentidos. PUERTO PARALELO Y SUS VARIANTES Definición: Un puerto es el lugar donde el CPU se comunica con otros dispositivos, existen de varios tipos, hay puertos de entrada, de salida y ambos. Además estos pueden ser seriales o paralelos. Puertos de salida: Son todos aquellos por donde el CPU envía datos a otros dispositivos, por ejemplo están la salida de video y de sonido. Nosotros vamos a hablar acerca de los puertos que se encuentran fuera del gabinete, hablaremos de los puertos de teclado, mouse, impresoras, etc. La computadora por si misma no sería capaz de realizar operaciones útiles para nosotros si no podemos comunicarnos con ella, necesita dispositivos periféricos por donde pueda darnos mensajes y nosotros podamos enviarle órdenes. Ahora bien, existen infinidad de dispositivos que sirven de extensión a la computadora, muchos son para fines muy específicos y no se pueden abarcar, entre los dispositivos que son de uso común se encuentra la impresora, el teclado, el mouse y el monitor. Puerto serial: El puerto serial es aquel que envía y recibe los datos BIT por BIT, entre los puertos seriales se puede mencionar el puerto de teclado, o el puerto del MODEM. Puerto paralelo: Este tipo de puerto transmite la información byte por byte, o sea que transmite ocho bits al mismo tiempo, de forma paralela. Un puerto paralelo por excelencia pues es el puerto para impresora 6
  • 8. Se puede observar que un puerto de entrada puede ser paralelo o serial, lo mismo que un puerto de entrada o de entrada / salida. A cada puerto la BIOS le asigna una dirección de memoria para que pueda trabajar, dependiendo de que clase de puerto sea se le asigna un determinado espacio exclusivo para él. Por medio de estas localidades de memoria el sistema puede enviarles o recibir información, es una especie de memoria de intercambio para la transmisión de dados de un lugar a otro. A esto se le llama espacio de localidades de memoria y se realiza dentro del primer kilo bite de la memoria principal. Existen otras asignaciones de memoria en otras capas superiores de memoria pero estas son hechas por el sistema operativo y por los demás programas, pero estas asignaciones son para fines específicos de los demás programas. Los puertos no solo se limitan a recibir la información, o enviarla, según sea el caso. El puerto provee la corriente eléctrica necesaria para el funcionamiento del dispositivo y revisa el estado de este. INTERRUPCIONES QUE INTERVIENEN EN CADA PUNTO Una interrupción es un mecanismo que permite ejecutar un bloque de instrucciones interrumpiendo la ejecución de un programa, y luego restablecer la ejecución del mismo sin afectarlodirectamente. De este modo un programa puede ser interrumpido temporalmente para atender alguna necesidad urgente del computador y luego continuar su ejecución como si nada hubiera pasado. Generalmente se aplica para realizar tareas elementales asincrónicas en el computador tales como responder al teclado, escribir en la pantalla, leer y escribir archivos. Podemos considerar una tarea asincrónica como aquella que es solicitada sin previo aviso y aleatoriamente desde el punto de vista del computador. Tomemos el caso de la operación Ctrl-Alt-Supr. En Windows tiene el efecto de que aparece en pantalla una lista de los procesos y ventanas en ejecución en el computador. En cambio en el Sistema Operativo DOS cuando el usuario presiona simultáneamente dichas teclas el computador procede a reinicializarse, aunque pueda estar ocupado ejecutando un programa en ese instante. Vale decir fuerza obligadamente a que el computador se reinicialice. Ya sea en el sistema Windows o en DOS, el computador no está constantemente monitoreando el teclado para ver si el usuario ha solicitado un Ctrl-Alt-Del, ya que en ese caso consumiría mucho tiempo de proceso en ello y por ende la capacidad de proceso se vería significativamente afectada. La solución empleada es una interrupción. 7
  • 9. Luego cada vez que el usuario presiona una tecla, la CPU es advertida a través de una señal especial de interrupción. Cuando la CPU advierte/recibe una señal de interrupción suspende temporalmente el proceso actual almacenando en memoria RAMun bloque con toda la información necesaria para restablecer posteriormente la ejecución del programa si es que procede. Enseguida la CPU determina qué elemento ha solicitado la interrupción y para cada caso existe un bloque de instrucciones que realiza la tarea correspondiente que es ejecutada a continuación. Terminada la ejecución se restablece el programa original en el mismo punto en que fue interrumpido usando para ello la información almacenada previamente. Cada interrupción tiene asignada un número único. El PC está diseñado de manera que la interrupción tiene asignada 4 bytes de memoria RAM. La dirección de los cuatro bytes en la memoria corresponde al _número de la _interrupción multiplicado por 4. Por ejemplo la interrupción IRQ 5 tiene asignada 4 bytes en la dirección 0x00014 (0000:0014). El contenido de los 4 bytes de memoria RAM asignados a una interrupción contiene a su vez una dirección que es un puntero a un bloque de instrucciones de máquina que realiza el procedimiento correspondiente. De este modo al iniciar la ejecución de una interrupción de los cuatro bytes que tiene asignados se obtiene la dirección del bloque de instrucciones que efectivamente se ejecutan. Por ejemplo si en la dirección 0000:0014 estuviera almacenado el valor 0xFFF00, ello significa que en dicha dirección (ó (F000:FF00) se encuentra el bloque de instrucciones a ejecutar cuando la interrupción IRQ 5 sea requerida. Esta forma de direccionamiento indirectopara las interrupciones brinda la flexibilidad necesaria para perfeccionar, modificar y extender el código de instrucciones correspondiente permitiendo mantener por ejemplo la compatibilidad de las distintas versiones de BIOS con las aplicaciones y equipos que usan las interrupciones. Tipos de interrupciones Existen tres tipos de interrupciones: a) requeridas por hardware Una lista de las interrupciones generadas por hardware es la siguiente b) requerida por software para interactuar con periféricos Los vectores de las interrupciones BIOS están ubicados a partir del vector 0x10H, vale decir inmediatamente a continuación de los vectores 0 a15 que son generados por hardware y que no son enmascarables. Cabe hacer notar que la arquitectura del PC está definida de tal manera que el primer Kilobyte 8
  • 10. del espacio de memoria está reservado para vectores de interrupciones, vale decir hay espacio para 256 interrupciones. Las interrupciones BIOS más importantes son las siguientes ENVIÓ Y RECEPCIÓN DE DATOS Cuando se escriben programas Java que se comunican a través de la red, se está programando en la capa de aplicación. Típicamente, no se necesita trabajar con las capas TCP y UDP — en su lugar se puede utilizar las clases del paquete java.net. Estas clases proporcionan comunicación de red independiente del sistema. A través de las clases del paquete java.net, los programas Java puede utilizan TCP o UDP para comunicarse a través de Internet. Las clases URL, URL Connection, Socket, y Socket Server? Utilizan el TCP para comunicarse a través de la Red. Las clases ? Y Datagram Server? Utilizan UDP. TCP proporciona un canal de comunicación fiable punto a punto, lo que utilizan para comunicarse las aplicaciones cliente-servidor en Internet. Las clases Socket y Server Socket del paquete java.net proporcionan un canal de comunicación independiente del sistema utilizando TCP, cada una de las cuales implementa el lado del cliente y el servidor respectivamente. La clase Socket del paquete java.net es una implementación independiente de la plataforma de un cliente para un enlace de comunicación de dos vías entre un cliente y un servidor. La clase Socket se sitúa en la parte superior de una implementación dependiente de la plataforma, ocultando los detalles de los sistemas particulares a un programa Java. Utilizando la clase java.net.Socket en lugar de tratar con código nativo, los programas Java pueden comunicarse a través de la red de una forma independiente de la plataforma. El entorno de desarrollo de Java incluye un paquete, java.io, que contiene un juego de canales de entrada y salida que los programas pueden utilizar para leer y escribir datos. Las clases Input Stream y Output Stream del paquete java.io son superclases abstractas que definen el comportamiento de los canales de I/O secuenciales de Java. java.io también incluye muchas subclases de Input Stream y Output Stream que implementan tipos específicos de canales de I/O. 9
  • 11. BÁSICAMENTE DISPONEMOS DE DOS TIPOS DE SERVICIO: Servicio sin conexión, donde el emisor y el receptor intercambian paquetes de información sin establecer una conexión previa, donde tampoco disponemos de un control de secuencia ni control de errores. En este tipo de conexión operamos con Datagramas y el protocolo empleado es UDP. Servicio orientado a conexión: Donde disponemos de un stream que nos asegura la entrega de la información de forma ordenada y fiable. Operamos con streams y el protocolo empleado es TCP JAVA NOS DA SOPORTE PARA: getAddress() getAllByName(string) getByName(String) getHostAddress() getHostName() getLocalHost() hashCode() isMulticastAddress() toString() Envío y recepción de datos a través de sockets: El servidor crea un Socket, mediante Server Socket, le asigna una dirección y un puerto y acepta llamadas (accept). A partir de este momento el proceso queda bloqueado a la espera de una llamada. Cuando llega una llamada, el accept crea un nuevo socket para procesar dicha llamada. Es únicamente en ese momento cuando existe la conexión y durará hasta que se libere mediante close(). Los sockets tienen asociados un Stream de entrada y otro de salida a través de los cuales se leen y escriben los datos: Para enviar datos se puede utilizar el Output Stream del socket, para enviar un flujo de bytes sin buffer. Pero también se puede crear un objeto de tipo stream de datos basado en el Output Stream. _Socket socket = new Socket (“158.42.112.67″, 1056); _ _String linea; _ teclado_ = new Buffered Reader(new _Input Stream Reader?_(System.in)); _ escribir_ = new Print Writer(socket.getOutputStream(),true); _ do_ { _ linea_=teclado.readLine(); _ escribir.println_(linea); _ _} while (linea.compareTo(“#”)!=0); _ …. 10
  • 12. Para recibir datos se puede utilizar Input Stream o definir un nuevo objeto del mismo tipo más eficiente. Ejemplo: Buffered Reader leer; String s; leer=_new Buffered Reader( new Input Stream Reader (socketRecepcion.getInputStream() ) ); _ while_ (“#”.compareTo(s=leer.readLine()!=0) { _ System.out.println_(nombre+”: “+s); _ } THREADS: En el programa se pueden implementar varios hilos de ejcución o threads. Podemos crear un servidor concurrente que ejecute el mismo código para cada cliente. Para ello podemos implementar un servidor para un solo cliente y dedicar un thread por cliente. Implementando una nueva clase derivada de la clase Thread. Creando una nueva clase que implemente el interface Runnable. Import java.io.*; Import java.net.*; Class _Servidor Eco Tcp__ extends Thread { _ Socket s=null; ?_(Socket s) {this.s=s;} _ _Public void run() { _ _Try { Input Stream is=s.getInputStream(); _ Output Stream _os=s.getOutputStream(); _ While(_true) os.write(is.read()); _ } catch (IO Exception_ e) {__System.out.println(“Error en socket”);}} _ _Public static void main(String agrs[]) throws IO Exception , _Unknown Host Exception?_ { _ _Server Socket ss=new Server Socket(7); _ 11
  • 13. While(true) { _e.start(); _ } } } Existe otro tipo de socket, RAW SOCKET que no opera en el nivel de transporte y accede directamente al nivel de red. Este tipo de socket suele ser utilizado por aplicaciones con privilegios para la definición de protocolos de bajo nivel. {text:bookmark-start} Puertos y Servicios Cada servicio está asociado a un puerto. Un puerto es una dirección numérica a través de la cual se procesa el servicio. Sobre un sistema Unix, los servicios que proporciona ese sistema se indican en el fichero /etc/services, y algunos ejemplos son: La primera columna indica el nombre del servicio. La segunda columna indica el puerto y el protocolo que está asociado al servicio. La tercera columna es un alias del servicio; por ejemplo, el servicio smtp, también conocido como mail, es la implementación del servicio de correo electrónico. Las comunicaciones de información relacionada con Web tienen lugar a través del puerto 80 mediante protocolo TCP. Para emular esto en Java, usaremos la clase Socket. La fecha (daytime). Sin embargo, el servicio que coge la fecha y la hora del sistema, está ligado al puerto 13 utilizando el protocolo UDP. Un servidor que lo emule en Java usaría un objeto 12
  • 14. MULTIMEDIA (JAVA FRAMEWORKS) APLICACIONES MULTIMEDIA Una aplicación multimedia es aquella que produce, reproduce, procesa o maneja uno o varios contenidos multimedia. A su vez un contenido multimedia es aquel que está compuesto de diversos “medios”, como pueden ser audio, video, texto, etc. Decimos que un contenido multimedia está basado en el tiempo en tanto que cada uno de sus medios cambia significativamente con él. Esta característica hace que un contenido multimedia requiera ser proporcionado y procesado en unas condiciones temporales estrictas. Por ejemplo cuando se reproduce un video, si los datos multimedia no pueden ser proporcionados lo suficientemente rápido pueden producirse pausas y retardos en la reproducción; por otro lado si los datos no pueden ser recibidos y procesados lo suficientemente rápido el video se reproduce a saltos en tanto que se desechan cuadros como medio para mantener la tasa de reproducción. Cada uno de los medios de los que se compone un contenido multimedia se denomina pista. Por ejemplo un contenido multimedia correspondiente a una videoconferencia puede contener una pista de audio y otra de video. Se dice que las pistas que componen un contenido multimedia están multiplexadas, al proceso de extracción de las distintas pistas que componen un contenido multimedia se le denomina demultiplexación. Existen distintos tipos de pistas en función del tipo de datos que contienen, como audio y/o video; a su vez cada pista posee un formato que define como están estructurados los datos que forman parte de ella. Los distintos formatos se distinguen en función de: • La calidad que proporcionan • Su exigencia de recursos de CPU para ser procesados • La cantidad de ancho de banda requerida para su transmisión Tabla 1 - Formatos multimedia soportados por JMF y sus características Formato Calidad Uso CPU Ancho de banda Cinepak Media Bajo Alto MPEG 1 Alta Alto Alto H.261 Baja Medio Medio H.263 Media Medio Bajo JPEG Alta Alto Alto Indeo Media Medio Medio PCM Alta Bajo Alto Mu-Law Baja Bajo Alto ADPCM (DVI, IMA) Media Medio Medio MPEG 1 Alta Alto Alto MPEG 1 Layer 3 Alta Alto Medio GSM Baja Bajo Bajo G.723.1 Media Medio Bajo 13
  • 15. Cada formato está destinado a diferentes tipos de aplicaciones y servicios. Formatos como MPEG 1 de gran calidad pero altos requerimientos de ancho de banda están destinados usualmente a aplicaciones que trabajan con almacenamiento local o en dispositivos ópticos como CD-ROM o DVD donde el ancho de banda y la capacidad de almacenamiento no son limitantes. En cambio otros formatos como H.261 y H.263 se usan para aplicaciones de videoconferencia donde el ancho de banda es un bien muy escaso; de la misma forma G.723 se usa para producir voz codificada con tasa de bits reducida para aplicaciones de telefonía IP por ejemplo. FUENTES DE DATOS MULTIMEDIA En Java Media Framework los datos multimedia pueden proceder de diversas fuentes, como archivos locales o remotos y video y audio en tiempo real o bajo demanda. Una fuente de datos multimedia se modela mediante un objeto DataSource. Podemos crear una DataSource directamente a través de una URL (Universal Resource Locator) o bien mediante un objeto de tipo MediaLocator. SOCKET () DEFINICIÓN DE SOCKET Un socket (enchufe), es un método para la comunicación entre un programa del cliente y un programa del servidor en una red. Un socket se define como el punto final en una conexión. Los sockets se crean y se utilizan con un sistema de peticiones o de llamadas de función a veces llamados interfaz de programación de aplicación de sockets (API, application programming interface). Un socket es también una dirección de Internet, combinando una dirección IP (la dirección numérica única de cuatro partes que identifica a un ordenador particular en Internet) y un número de puerto (el número que identifica una aplicación de Internet particular, como FTP, Gopher, o WWW). 14