claret

Un servidor de correo es una aplicación informática que nos permite enviar mensajes (correos) de unos usuarios a otros, con independencia de la red que dichos usuarios estén utilizando. Entre los más usados se encuentran Postfix, sendmail y Exim. Este último predeterminado en la distribución GNU/Linux Debian

Para lograr la conexión se definen una serie de protocolos, cada uno con una finalidad concreta:

  • SMTP, Simple Mail Transfer Protocol: Es el protocolo que se utiliza para que dos servidores de correo intercambien mensajes.
  • POP, Post Office Protocol: Se utiliza para obtener los mensajes guardados en el servidor y pasárselos al usuario.
  • IMAP, Internet Message Access Protocol: Su finalidad es la misma que la de POP, pero el funcionamiento y las funcionalidades que ofrecen son diferentes.

Así pues, un servidor de correo consta en realidad de dos servidores: un servidor SMTP que será el encargado de enviar y recibir mensajes, y un servidor POP/IMAP que será el que permita a los usuarios obtener sus mensajes.

Para obtener los mensajes del servidor, los usuarios se sirven de clientes, es decir, programas que implementan un protocolo POP/IMAP. En algunas ocasiones el cliente se ejecuta en la máquina del usuario (como el caso de Mozilla Thunderbird, Evolution, Microsoft Outlook). Sin embargo existe otra posibilidad: que el cliente de correo no se ejecute en la máquina del usuario; es el caso de los clientes vía web, como GMail, Hotmail, OpenWebmail, SquirrelMailTerra. En ellos la arquitectura del servicio es más compleja: o

En una máquina (A) tenemos el servidor SMTP y el servidor POP/IMAP. En otra (B) tenemos un servidor web con una aplicación cliente POP/IMAP. El usuario conecta vía WEB con (B) y entonces el cliente POP/IMAP establece una conexión POP/IMAP con el servidor de la máquina A; éste servidor le devuelve a B los mensajes del usuario, y una vez recibidos, el cliente genera una página web con los mensajes recibidos. La página web se pasa al servidor web que será el que la envíe al explorador web del usuario.

En cualquier caso, los protocolos SMTP/POP/IMAP son inseguros en cuanto a que los mensajes viajan en claro por la red, es decir, es fácil obtener nuestros mensajes y contraseñas. Para ello se suele añadir una capa SSL, es decir, un método de cifrado que puedan implementar tanto el servidor como el cliente. En el caso del correo vía web se pueden utilizar dos capas SSL: una entre A y B y otra entre el servidor web de B y el navegador web del usuario.

Etiquetas: 0 comentarios | edit post
UDP
claret


UDP

En el siguiente ejemplo, se desarrolla un mínimo servidor UDP. La aplicación servidor UDP depende de una clase de comunicaciones proporcionada por Java: DatagramSocket Esta clase realiza la mayor parte del trabajo de crear el socket. El servidor implementado escucha por el puerto de comunicaciones 8050, cuando le llega un datagrama procedente de algún cliente, imprime la dirección del cliente, y el puerto por la salida estandar del sistema, y luego envia un datagrama que contiene la fecha del sistema.


public class ServerTime{
public static void main(String[] args) throws IOException {
//el puerto de escucha del servidor será el 8050
int PUERTO=8050;

byte msg[]=new byte[1024];

//Creamos el socket UDP del servidor en el pueto asociado
DatagramSocket s = new DatagramSocket(PUERTO);
System.out.println(
"Servidor Activo");

//implementacion del protocolo del servidor en un bucle infinito
while (true) {
DatagramPacket recibido = new DatagramPacket(new byte [1024],1024);

//llega un datagrama
s.receive(recibido);
System.out.println(
"Ha llegado una peticion \n");
System.out.println(
"Procedente de :" + recibido.getAddress());
System.out.println(
"En el puerto :" + recibido.getPort());
System.out.println(
"Sirviendo la petición");

//se prepara el mensaje a enviar con la fecha del sistema
String message=
new String("HORA DEL SERVIDOR " + new Date());
msg=message.getBytes();

//se crea el datagrama que contendrá al mensaje
DatagramPacket paquete=new DatagramPacket(msg,msg.length,recibido.getAddress(),

recibido.getPort());

//se le envia al cliente
s.send(paquete);

}
} }
Etiquetas: 0 comentarios | edit post
claret

¿Qué es CORBA?

CORBA (Common Object Request Broker Architecture) es una arquitectura estandar para sistemas de objetos sitribuidos. Permite una colección distribuida y heterogénea de objetos que interoperan entre sí.

La arquitectura CORBA

CORBA define una arqitectura para objetos distribuidos. El paradigma básico de CORBA es que se hace una petición para obtener un servicio de un objeto distribuido. Todo lo demás definido por el OMG está descrito en términos de este paradigma básico.

Los servicios que proporciona un objeto son dados por su interfaz. Los interfaces se definen en el IDL (Interface Definition Language) del OMG. Los objetos distribuidos están identificados por referencias a objetos, las cuales se describen mediante los interfaces IDL.

La figura de abajo muestra gráficamente una petición. Un cliente tiene una referencia a un objeto distribuido. La refencia al objeto está descrita por un interface. En la figura, la referencia está simbolizada por el interface Rabbit. El ORB (Object Request Broker), entrega la petición al objeto y devuelve el resultado al cliente.

Etiquetas: 0 comentarios | edit post
claret

Java proporciona mecanismos potentes y a la vez sencillos para construir programas para redes tales como Internet. Java aporta versatilidad, portabilidad, clases especializadas para gran número de servicios (incluidas de serie), manejo eficiente de la memoria, etc. Entre las clases que permiten la comunicación tenemos la clase URL en un nivel superior y las clases Socket y ServerSocket a un nivel más bajo.

Mediante la clase Socket incluida en el paquete java.net podemos crear conexiones de flujo, que son los que utilizan el protocolo TCP, entre dos ordenadores. El tipo de datos en la comunicación puede ser cualquiera, y por ello el protocolo TCP es usado por http, ftp, telnet, etc. Más adelante veremos un sencillo ejemplo de comunicación entre un navegador y una aplicación Java y veremos de forma básica como es el protocolo http y como interacciona un navegador con un servidor.

Los Sockets o enchufes son semejantes a conexiones telefónicas entre dos ordenadores remotos, la comunicación es continúa y finaliza cuando uno de los dos ordenadores cierra su conexión.

La clase ServerSocket es una clase incluida en java.net que sirve para atender peticiones de conexiones, lo cual es útil a la hora de crear un servidor. Como veremos más adelante, en un servidor hay un bucle infinito donde se llama al método accept de la clase ServerSocket quedando a la espera de aceptar una conexión. Cuando esta conexión se produce esta clase devuelve un objeto de tipo socket que es el que utiliza el servidor para comunicarse con el cliente, de este socket podemos conseguir una corriente de entrada y otra de salida.

Vamos a continuación a ver un programa sencillo ejemplo de como funcionan estas clases. Para ejecutar este programa debemos tener un JDK que compile el programa y luego lo ejecute.

Para el caso de CrearCliente necesitamos un servidor como Apache instalado en nuestra máquina que tenga la dirección localhost (127.0.0.1) o cualquier dirección de Internet a la que tengamos acceso y que sirva páginas html.

Para el caso de CrearServidor necesitamos un navegador en el cual visualizaremos lo que nos devuelve el servidor.

Método CrearCliente.-

En el método CrearCliente creamos un socket que va a conectar con una dirección de Internet local (127.0.0.1) y con index.html a través del puerto 80. A el socket se le especifican estos parámetros en el constructor.

Una vez realizada la conexión obtenemos un DataOutputStream del socket con getOutputStream y escribimos nuestra petición que en nuestro caso es igual a la que realiza el Internet Explorer. En esa corriente de salida escribimos nuestros datos. Después obtenemos un DataInputStream con getInputStream y leemos lo que nos llega que puede ser el texto de una página html. Por último cerramos la conexión con close una vez que no hay más datos que leer.

Podemos ver que la creación de un Socket es sencilla y que leer y escribir de un socket es como leer y escribir de un archivo.

Método CrearServidor

En este método vamos a crear un servidor sencillo que va atender los datos de un navegador tal como Internet Explorer. Este servidor va a servir por la dirección 127.0.0.1 que es la de localhost, y por el puerto 80. Estas dos condiciones se especifican al crear el ServerSocket (Ojo con la dirección especificada ya que tiene que existir en la máquina).

Una vez creado el ServerSocket se crea un bucle infinito en el cual el método accept espera hasta recibir una conexión. Este método al aceptar la conexión devuelve un Socket que es con el que vamos a realizar la conexión al cliente. Al igual que el método anterior obtenemos un DataInputStream con getInputStream del cual vamos a leer los datos desde el cliente.

claret
CLASES

Las clases son lo más simple de Java. Todo en Java forma parte de una clase, es una clase o describe como funciona una clase. El conocimiento de las clases es fundamental para poder entender los programas Java.
Todas las acciones de los programas Java se colocan dentro del bloque de una clase o un objeto. Todos los métodos se definen dentro del bloque de la clase, Java no soporta funciones o variables globales. Esto puede despistar a los programadores de C++, que pueden definir métodos fuera del bloque de la clase, pero esta posibilidad es más un intento de no separarse mucho y ser compatible con C, que un buen diseño orientado a objetos. Así pues, el esqueleto de cualquier aplicación Java se basa en la definición de una clase.
Todos los datos básicos, como los enteros, se deben declarar en las clases antes de hacer uso de ellos. En C la unidad fundamental son los ficheros con código fuente, en Java son las clases. De hecho son pocas las sentencias que se pueden colocar fuera del bloque de una clase. La palabra clave import (equivalente al #include) puede colocarse al principio de un fichero, fuera del bloque de la clase. Sin embargo, el compilador reemplazará esa sentencia con el contenido del fichero que se indique, que consistirá, como es de suponer, en más clases.

Tipos de Clases

Hasta ahora sólo se ha utilizado la palabra clave public para calificar el nombre de las clases que hemos visto, pero hay tres modificadores más. Los tipos de clases que podemos definir son:
abstract
Una clase abstract tiene al menos un método abstracto. Una clase abstracta no se instancia, sino que se utiliza como clase base para la herencia.
final
Una clase final se declara como la clase que termina una cadena de herencia. No se puede heredar de una clase final. Por ejemplo, la clase Math es una clase final.
public
Las clases public son accesibles desde otras clases, bien sea directamente o por herencia. Son accesibles dentro del mismo paquete en el que se han declarado. Para acceder desde otros paquetes, primero tienen que ser importadas.
synchronizable
Este modificador especifica que todos los métodos definidos en la clase son sincronizados, es decir, que no se puede acceder al mismo tiempo a ellos desde distintos threads; el sistema se encarga de colocar los flags necesarios para evitarlo. Este mecanismo hace que desde threads diferentes se puedan modificar las mismas variables sin que haya problemas de que se sobreescriban.
Etiquetas: 1 comentarios | edit post
claret
Se han desarrollado diferentes familias de protocolos para comunicacion por red de datos para los sistemas UNIX. El más ampliamente utilizado es el Internet Protocol Suite, comúnmente conocido como TCP / IP.
Es un protocolo
DARPA que proporciona transmisión fiable de paquetes de datos sobre redes. El nombre TCP / IP Proviene de dos protocolos importantes de la familia, el Transmission Contorl Protocol (TCP) y el Internet Protocol (IP). Todos juntos llegan a ser más de 100 protocolos diferentes definidos en este conjunto.
El TCP /
IP es la base del Internet que sirve para enlazar computadoras que utilizan diferentes sistemas operativos, incluyendo PC, minicomputadoras y computadoras centrales sobre redes de área local y área extensa. TCP / IP fue desarrollado y demostrado por primera vez en 1972 por el departamento de defensa de lo Estados Unidos, ejecutándolo en el ARPANET una red de área extensa del departamento de defensa.
claret
El datamining (mineria de datos), es el conjunto de tecnicas y tecnologias que permiten explorar grandes bases de datos, de manera automática o semiautomática, con el objetivo de encontrar patrones repetitivos, tendencias o reglas que expliquen el comportamiento de los datos en un determinado contexto.
La mineria de datos hace uso de todas las técnicas que puedan aportar información útil, desde un sencillo analisis gráfico, pasando por metodos estadísticos más o menos complejos, complementados por metodos y algoritmos del campo de la inteligencia artifical y el aprendizaje automático que resuelven problemas tipicos de agrupamiento, automático, clasificación, predicción de val0res, detección de patrones, asociación de atributos, etc. Es, por tanto, un campo multidisciplinar que cubre numerosas áreas y se aborda desde múltiples puntos de vista, como la informatica (cálculo automático) o la ingenieria.
claret
En Java las comunicaciones se basan en sockets con los que trabajamos a través de flujos de datos como si de E/S de archivos se tratara. Los sockets se clasifican en sockets de flujo o sockets de datagramas dependiendo de si el servicio utiliza TCP (orientado a conexión y fiable) o UDP.
En el modelo de sockets de flujo contamos con un objeto de tipo Socket en el cliente y en el servidor uno o más objetos Socket asociados a un ServerSocket. La E/S se realiza a través de objetos InputStream y OutputStream asociados a los Sockets.
El servidor crea un socket servidor que tiene como parámetro el puerto en el que a va estar escuchando las peticiones entrantes:ServerSocket servicio = new ServerSocket(9999);
accept se mantiene a la espera de conexiones entrantes, bloqueando la ejecución. Cuando se establece una conexión se devuelve una instancia de Socket con la que llevar a cabo la comunicación.
Etiquetas: 0 comentarios | edit post
claret
Se llama así lo que en realidad es un Vector de bits. Lo que ocurre es que está optimizado para uso de bits. Bueno, optimizado en cuanto a tamaño, porque en lo que respecta al tiempo de acceso a los elementos, es bastante más lento que el acceso a un array de elementos del mismo tipo básico.
Además, el tamaño mínimo de un BitSet es de 64 bits. Es decir, que si se está almacenando cualquier otra cosa menor, por ejemplo de 8 bits, se estará desperdiciando espacio.
En un Vector normal, la colección se expande cuando se añaden más elementos. En el BitSet ocurre los mismo pero ordenadamente.
Etiquetas: 0 comentarios | edit post
claret
La clase Vector es parte del paquete java.util de la librería estándar de clases de Java. Ofrece un servicio similar a un arreglo, ya que se pueden almacenar y accesar valores y referencias a través de un índice. Pero mientras un arreglo es de cierto tamaño dado, un objeto de tipo Vector puede dinámicamente crecer y decrecer conforme se vaya necesitando. Un elemento puede insertarse y eliminarse de una posición específica a través de la invocación de un sólo método.A diferencia de un arreglo, un Vector no está declarado para ser de un tipo particular. Un objeto de tipo Vector maneja una lista de referencias a la clase Object, así no pueden almacenarse tipos de datosp rimitivos.
Etiquetas: 0 comentarios | edit post
claret

Un hilo es una secuencia de instrucciones que está controlada por un planificador que se comporta como un flujo de control secuencial. El planificador gestiona el tiempo de ejecución del procesador y asigna de alguna manera dicho tiempo a los diferentes hilos actualmente presentes.

Normalmente los hilos de un proceso (en este contexto el proceso es lo que se suele llamar así en el ámbito de sistemas operativos) suelen tener acceso a todos los recursos disponibles al proceso, es decir, actuan sobre una memoria compartida.

ejemplo:

public MiHilo extends Thread
{
public void run()
{
// Aquí el código pesado que tarda mucho
}
};
...
MiHilo elHilo = new MiHilo();
elHilo.start();
System.out.println("Yo sigo a lo mio");
Etiquetas: 0 comentarios | edit post
claret

Un amigo es...

El que siendo leal y sincero, te comprende.
El que te acepta como eres y tiene fe en ti.
El que sin envidia reconoce tus valores,
te estimula y elogia sin adularte.

El que te ayuda desinteresadamente
y no abusa de tu bondad.
El que con sabios consejos te ayuda a
construir y pulir tu personalidad.
El que goza con las alegrías que
llegan a tu corazón.
El que respetando tu intimidad, trata
de conocer tu dificultad para ayudarte.

El que sin herirte te aclara lo que
entendiste mal o te saca del error.
El que levanta tu animo cuando estas caído.
El que con cuidados y atenciones quiere
menguar el dolor de tu
enfermedad. (Física o Síquica)
El que te perdona con generosidad,
olvidando tu ofensa.

El que ve en ti un ser humano con alegrías,
esperanzas, debilidades y luchas...