Proyecto Integral de Ingeniería del Software | |
---|---|
Metodologías Ágiles |
Trabajo Fin De Grado | |
---|---|
Guía Memoria TFG |
Servidores | |
---|---|
Minercraft | |
Knoppia | |
Omegacraft |
Base de datos de juegos | |
---|---|
GameBoy Advance (GBA) |
Proyecto Integral de Ingeniería del Software | |
---|---|
Metodologías Ágiles |
Trabajo Fin De Grado | |
---|---|
Guía Memoria TFG |
Servidores | |
---|---|
Minercraft | |
Knoppia | |
Omegacraft |
Base de datos de juegos | |
---|---|
GameBoy Advance (GBA) |
Un Socket es un punto de conexión (Una Tubería o un Canal) entre 2 procesos e identificado por una IP y un Puerto. En este caso serán 2 procesos ejecutándose simultáneamente conectados por un socket. Un socket funciona de una forma similar a la de los ficheros. Para leer y escribir utilizaremos un Buffer (PrintWritter y BufferedReader)
package jelouda; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; public class Cliente { public void ejecutar() { try { System.out.print("Lanzando conexión...."); Socket socket = new Socket ("127.0.0.1", Servidor.PUERTO);//Conectamos al servidor System.out.println("[OK]"); BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));//Bufer de lectura PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));//Buffer de escritura String cadenaRecibida = br.readLine(); System.out.println(cadenaRecibida); pw.println("cadena recibida" + cadenaRecibida); pw.flush(); System.out.println("Fin del Cliente"); }catch(IOException e){ e.printStackTrace(); } } public static void main(String[] args) { Cliente client = new Cliente(); client.ejecutar(); } }
package jelouda; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; public class Servidor { public static int PUERTO = 5000;//Indicamos el puerto del servidor public void ejecutar() { try { System.out.println("Lanzando Servidor..."); ServerSocket serverSocket = new ServerSocket(Servidor.PUERTO); Socket socket = serverSocket.accept(); BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));//Buffer entrada PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));//Buffer salida String cadenaRecibida = br.readLine(); pw.print(cadenaRecibida); pw.flush(); System.out.println("Fin del Servidor"); }catch(IOException e){ e.printStackTrace(); } } public static void main(String[] args) { Servidor server = new Servidor(); server.ejecutar(); } }
Añadimos un nuevo método al que llamaremos ejecutar infinito:
package jelouda; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; public class Servidor { public static int PUERTO = 5000;//Indicamos el puerto del servidor public void ejecutar() { try { System.out.println("Lanzando Servidor..."); ServerSocket serverSocket = new ServerSocket(Servidor.PUERTO); //Lo hacemos contínuo //Scanner sc = new Scanner(System.in); //sc.nextLine(); Socket socket = serverSocket.accept(); BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));//Buffer entrada PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));//Buffer salida String cadenaRecibida = br.readLine(); pw.print(cadenaRecibida); pw.flush(); System.out.println("Fin del Servidor"); }catch(IOException e){ e.printStackTrace(); } } public void ejecutarInfinito() { try { System.out.println("Lanzando Servidor..."); ServerSocket serverSocket = new ServerSocket(Servidor.PUERTO); Socket socket = serverSocket.accept(); BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));//Buffer entrada PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));//Buffer salida while(true) { System.out.println(br.readLine()); pw.println(br.readLine()); pw.flush(); } }catch(IOException e){ e.printStackTrace(); } } public static void main(String[] args) { Servidor server = new Servidor(); server.ejecutarInfinito(); } }
Añadimos un nuevo método al que llamaremos ejecutar infinito:
package jelouda; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; public class Cliente { public void ejecutar() { try { System.out.print("Lanzando conexión...."); Socket socket = new Socket ("127.0.0.1", Servidor.PUERTO);//Conectamos al servidor System.out.println("[OK]"); BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));//Bufer de lectura PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));//Buffer de escritura String cadenaRecibida = br.readLine(); System.out.println(cadenaRecibida); pw.println("cadena recibida" + cadenaRecibida); pw.flush(); System.out.println("Fin del Cliente"); }catch(IOException e){ e.printStackTrace(); } } public void ejecutarInfinito() { try { System.out.print("Lanzando conexión...."); Socket socket = new Socket ("127.0.0.1", Servidor.PUERTO);//Conectamos al servidor System.out.println("[OK]"); BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));//Bufer de lectura PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));//Buffer de escritura String lineaLeida =""; Scanner teclado = new Scanner(System.in); while(true) { lineaLeida = teclado.nextLine(); pw.println(lineaLeida); pw.flush(); } }catch(IOException e){ e.printStackTrace(); } } public static void main(String[] args) { Cliente client = new Cliente(); client.ejecutarInfinito(); } }