Creacion de-socket-tcp-en-java

306 views

Published on

Published in: Design
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
306
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Creacion de-socket-tcp-en-java

  1. 1. Código Java Oracle Programación, Java, Oracle, Php, JavaScript, Facebook API, WordPress, SEO... http://codigojavaoracle.com Cómo crear un Socket TCP en Java En este artículo mostramos el código necesario para crear un Socket TCP (Orientado a Conexión) realizado en Java. Cómo ya sabéis el protocolo TCP está orientado a conexión, para más información podéis ver este link. Socket TCP Basicamente, este es el funcionamiento de los Socket que necesitamos para una conexión TCP. En el que podemos distinguir dos tipos de Socket el del Servidor y el del Cliente. La creación del socket en el servidor se remite a crear el socket, indicar por que puerto se harán las escuchas y esperar a la llamada de un cliente para aceptar la conexión, en cambio un cliente creará el socket e indicará donde se encuentra y por que puerto quiere conectarse, de está forma Cliente y Servidor crearán una conexión. Servidor: Para crear los socket se crea un objeto del tipo ServerSocket, este método pertenece a la clase java.net.Serversocket Una vez que hemos creado el objeto socket mandamos un parámetro que indicará el puerto por el que se realzará las comunicaciones. Para realizar una conexión entre Cliente-Servidor, el servidor usará el método socket.accept para confirmar que se ha iniciado la conexión. Cliente: Primero crea un objeto del tipo Socket que pertenece a la clase java.net.Serversocket, Después se obtiene un objeto InetAddress, y usando el método getByName le indicamos donde se va a ejecutar el cliente, en nuestro caso indicamos que será en localhost. Finalmente creamos un objeto de tipo socket al que pasaremos la dirección donde se está ejecutando el cliente, y el puerto por donde se conectará al servidor. Código del Servidor: import java.net.*; //Importa la libreria java.net import java.io. *; //Importa la libreria java.io public class servidortcp { // se declara una clase de nombre servidortcp public static void mai n(String argv[]) { //Se declara el método principal main 1/4
  2. 2. Código Java Oracle Programación, Java, Oracle, Php, JavaScript, Facebook API, WordPress, SEO... http://codigojavaoracle.com que espera un parámetro System.out.println("SERVIDOR"); ServerSocket socket; //Se crea un objeto de ServerSocket //b oolean fin = false; //Se declara una variable booleana inicializada a false try { //Abrimos una exceptción para el tratamiento de errores //Creamos un servidor socke t = new ServerSocket(6004); //Abre un socket en modo escucha en el pue rto 6001 Socket socket_cli = socket.accept(); //Inicio.Se a cepta la conexión. //Método de la clase socket pa ra recibir datos DataInputStream in = new DataI nputStream(socket_cli.getInputStream()); //Método para mandar un valor al cliente DataOutputStream out = new DataOutputStream(socket_cli.getOutputStream()); String mensaje =""; //Se inicializa la variabl e de string mensaje a vacío mensaje = in.readUTF(); //La var iable Mensaje guarda el valor que ha mandado el cliente if (mensaje.startsWith("HELLO")) { out.writeUTF("HEL LO"); } do { //Est ará escuchando el mensaje sin interrupción debido a la condición (1>0) del while mensaje =""; //Se inicializa la variable de st ring mensaje a vacío mensaje = in.readUTF(); //La variabl e Mensaje guarda el valor que ha mandado el cliente if (mensaje.startsWith("ALL")) { mensaje = "ALL BUR:250;CHE:300; BIG:540; PAT:380; SAL:240; BEV:210; D IE:0; COF:0; DES:300"; System.out.println(mensaje); } else if(mensaje.startsWith("BUR ")) { mensaje = "BUR 250"; Sy stem.out.println(mensaje); } else if (mensaj e.startsWith("CHE")) { mensaje = "CHE 300"; System.out.println(mensaje); } else if (me nsaje.startsWith("BIG")) { mensaje= "BIG 540"; System.out.println(mensaje); } else if (mensaje.startsWith("PAT")) { mensaje= "PAT 380"; System.out.println(mensaje); } else if (mensaje.startsWith("SAL")) { mensaje= "SAL 240"; System.out.println(mensaje); } el se if (mensaje.startsWith("BEV")) { mensaje= "SAL 210"; System.out.println(mensaje); } else if (mensaje.startsWith("DIE")) { mensaje= "DIE 0"; System.out.println(mensaje); } else if (mensaje.startsWith("COF")) { mensaje= "COF 0" ; System.out.println(mensaje); } else if (mensaje.startsWith("DES")) { mensaje= "DES 3 00"; System.out.println(mensaje); } else if (mensaje.startsWith("fin")) { mensaje= "fi n"; System.out.println(mensaje); } else{ mensaje = "ERROR"; System.o 2/4
  3. 3. Código Java Oracle Programación, Java, Oracle, Php, JavaScript, Facebook API, WordPress, SEO... http://codigojavaoracle.com ut.println(mensaje); } //Manda mos al cliente la respuesta de las calorias según lo que ha mandado out.writeUTF(mensaje); //System.out.printl n(mensaje); } while (1>0); } c atch (Exception e) { //Si se produce algún error saltará la ex cepción con el mensaje de error System.err.println(e.getMess age()); System.exit(1); //Salimos con error } } } Código del Cliente: import java.net.*; //Se importa la libreria java.net import java. io.*; //Se importa la libreria java.io //Se declara la clase client etcp public class clientetcp { //Se declara el método principal main que recibe un parámetro public static void main(String argv[] ) { //Si no recibe ningún parámetro dará error if (arg v.length == 0) { System.err.println("java clientetcp servido r"); System.exit(1); } System.out.println( "CLIENTE"); // Se guarda en el buffer un valor introducido p or pantalla BufferedReader in = new BufferedReader(new InputS treamReader(System.in)); Socket socket=null; //Se crea un obj eto de tipo socket InetAddress address; //Se crea un objeto de tipo InetAddress String mensaje=""; //Se declara una variable d e tipo string try { //Se abre una excepción //Obtiene el nombre de la dirección remota del socket a ddress=InetAddress.getByName(argv[0]); try{ soc ket = new Socket(address,Integer.parseInt(argv[1])); //Se crea un obje to de tipo socket //para establecer una conexión por el puerto 6001 }catch(NumberFor matException nfe){ System.err.println("El argumento argv[1] no es un numero"); System.exit(1); } //Se declara un objeto de tipo DataOutputStream para mandar valores a l servidor DataOutputStream out = new DataOutp utStream(socket.getOutputStream()); //Se declara un objeto de tipo DataOutputStream para mandar obtener al servidor Da taInputStream in2 = new DataInputStream(socket.getInputS tream()); //Mandamos la palabra HELLO al servidor out.writeUTF("HELLO"); //Recogemos lo que nos dev uelve el servidor y lo guardamos en la variable mensaje mens aje = in2.readUTF(); System.out.println(mensaje); //Imprime el contenido de mensaje do { //Mientra s el mensaje no sea fin seguira leyendo mensaje = in.read Line(); out.writeUTF(mensaje); //System.out. println(mensaje); //Imprime el contenido de mensaje 3/4
  4. 4. Código Java Oracle Programación, Java, Oracle, Php, JavaScript, Facebook API, WordPress, SEO... http://codigojavaoracle.com //NUEVO mensaje =""; //Se inicializa la variable de string mensaje a vacío mensaje = in2.readUTF(); System.out.println(mensaje); //Imprime el contenido de mensaje //NUEVO } while (!mensaje.startsWith("fi n")); } catch (Exception e) { System.err.print ln(e.getMessage()); System.exit(1); } } } 4/4 Powered by TCPDF (www.tcpdf.org)

×