Ya sabiamos que JAVA es un lenguaje poderoso y sobre todo muy fácil a la hora de implementar ciertas librerias como es el caso, pasare a explicar como es que yo realizo conexiones de tipo cliente-servidor por ejemplo para un chat, transferencias, etc. Lo primero es hacer dos clases separadas, la que jugará el rol de Cliente y la que lo hará como Servidor. Definamos primero
la clase servidor en conjunto con unos streams para comunicar datos (texto) entre las clases.//Importar librerias, lo cual debe hacerse independientemente no como esta aqui import java.net.*; import java.io.*; //se define la clase public class Servidor { //objeto fundamental que abrira el puerto private ServerSocket servsock; //socket el cual aceptara conexiones private Socket sock; //stream para enviar datos, ojo solo enviar! private ObjectOutputStream oos; //instanciar componentes en el constructor public Servidor() { //le pasamos como aprametro el numero de puerto que usaremos, verificar que este libre servsock = new ServerSocket(8033); //le decimos que acepte conexiones, por el puerto definido sock = servsock.accept(); //configuramos el stream listo para enviar oos = new ObjectOutputStream(sock.getOutputStream()); } }
Básicamente esos son los componentes del Servidor, el stream no es necesario es solo por si deseamos una comunicacion entre el cliente y nuestro servidor, y en este caso soolo basta un oos.writeObject(Object) para mandar datos por el stream. Cabe destacar que el metodo accept() de alguna manera detiene la ejecución del programa y se reanuda hasta que un cliente se conecte al servidor, por esto si vamos a hacer otras cosas en el server (que lo mas seguro es que si) es mejor implementar ese código en un hilo y que corra aparte de nuestro programa. Por otro lado la clase cliente es más sencilla, veamos:
//importamos las librerias import java.net.Socket; import java.io.ObjectInputStream; public class Cliente { //socket por el cual comunicarse private Socket sock; //Stream para recibir datos, en este caso solo recibe el cliente private ObjectInputStream ois; //En el constructor instanciamos los componentes public Cliente() { //este socket no acepta conexion sino que se conectará a la IP que se le pase como primer parámetro //y el puerto va como segundo parametro, la IP es la del servidor bien puede ser "localhost" sock = new Socket("154.43.34.123", 8033) //enlazamos el stream por el que vienen datos ois = new ObjectInputStream(socket.getInputStream()); } }
De esta manera en un hilo puede estarse verificando cuando llegue algo por el stream con un "ois.readObject()" y sobre el socket pues en este caso no acepta conexión si no que se va a conectar, se le pasa la IP en una string o si es local será "localhost" y despues el numero de puerto en el que el servidor esta a la escucha. Asi de fácil, así de sencillo, obviamente esos codigos no hacen nada por si solos pero esa es la idea, y de alli podemos implementarlo en un chat por ejemplo.
PD: Siempre que trabajemos con streams es necesario escribir el código en un try/catch por que en caso de error llegan a lanzar excepciones.
No hay comentarios:
Publicar un comentario
Deja un comentario! =)