elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Java Programacion Red
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Java Programacion Red  (Leído 3,547 veces)
cimi

Desconectado Desconectado

Mensajes: 236


Cotz


Ver Perfil
Java Programacion Red
« en: 13 Noviembre 2004, 17:16 pm »

 programando sockets,, no se si sea correcto el llamarle programacion red pero yo asi le entiendo en fin, pues acabo de aventarme un programa sencillo que lleva acabo una comuncacion entre dos makinas cliente-servidor de forma parecida a un chat.  Aunque es algo muy sencillo aki les dejo el script para el que lo quiera probar y hacer con el lo que desee, ala vez que pido aquellos que sepan de este desmadre el si me pueden decir como hacer una comunciacion simultanea mediante este metodo o bien que tendria que hacer para lograrlo.

/*PROGRAMA QUE EJEMPLIFICA EL MODELO DE COMUNICACION CLIENTE-SERVIDOR
*
*   THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AN MODIFY IT
*   UNDER TERMS OF THE GPL GENERAL PUBLIC LICENSE. PODES DISTRIBUIRLO
*      (HE) CORPORATION, PROGRAMADOR: CIMI
*
*LA COMUNICACION LA REALIZA MEDIANTE EL PROTOCOLO TCP PROCURANDO OCUPAR
*PUERTOS SUPERIORES AL 1024 DEBIDO A QUE DENTRO DE ESTE RANGO 0-1024
*SE ENCUENTRAN PUERTOS QUE PERTENECEN A SERVICIOS BASICOS, POR ELLO LA
*ELECCION DEL PUERTO 35557 AUNQUE PUDO HABER SIDO OTRO.
*
*EL FUNCIONAMIENTO HASTA EL MOMENTO ES FULLDUPLEX CREANDO UN AMBIENTE SIMILAR
*AL DE UN CHAT CON LA RESPECTIVA DIFERENCIA QUE NO PUEDE HABER ENVIO DE
*MENSAJES SIMULTANEOS.
*
*NOTA IMPORTANTE:
*EL SERVIDOR SERA QUIEN ESTE ESCUCHANDO PETICIONES DE CONEXION, POR TANTO
*PARA EL FUNCIONAMIENTO CORRECTO DEL PROGRAMA EJECUTAR PRIMERO Y ESCRIBIR EN
*EL SCRIPT DEL SERVER Y POSTERIORMENTE EL DEL CLIENTE
*/

//SCRIPT SERVER.JAVA  ESTE SE ENCARGARA DE ESCUCHAR PARA ESTABLECER LA COMUNICACION
import java.io.*;//NECESARIA PARA EL MANEJO DE ENTRADA Y SALIDA DE DATOS
import java.net.*;//NECESARIA PARA EL USO DE SOCKETS

public class server
{
   /*SE MANEJARA LA EXCEPTION EXIGIDA POR EL PROGRAMA, EN ESTE CASO
   DICHA EXCEPCION SE ENFOCARA ALA ENTRADA Y SALIDA DE DATOS (io) POR ELLO
   VA EL throws IOException*/
   public static void main(String arg[]) throws IOException
   {   
      //DECLARACION DE VARIABLES
      String cadena0,cadena1="";
      int control=0;

      //CREANDO EL PUNTO DE COMUNICACION SERVIDOR
      ServerSocket punto=new ServerSocket(35557);//ACEPTAR CLIENTES POR CONEXION TCP Y PUERTO X
     
      //SISTEMA BLOQUEADO HASTA QUE UN CLIENTE SE CONECTE, PARA DESPUES ACEPTAR SU LLAMADA
      System.out.println("*SERVIDOR INICIADO*, ESPERANDO AL CLIENTE");
      Socket cliente=punto.accept();
           
      //getInetAddress PERTENECE ALA CLASE INETADDRES QUE SIRVE PARA CONOCER UN HOST
      System.out.println("CONECTADO CON: " + cliente.getInetAddress());

      //SE DEFINE UN OBJETO PARA EL FLUJO DE SALIDA Y ENTRADA STREAM SOBRE O CON EL SOCKET
      DataOutputStream salida=new DataOutputStream(cliente.getOutputStream());
      DataInputStream entrada=new DataInputStream(cliente.getInputStream());

      //PARA PODER ALMACENAR UN STRING ES NECESARIO CREAR LO SIGUIENTE
      //EL CONSTRUCTOR DE BUFFEREDREADER RECIBE UN FLUJO DE ENTRA STRAM DE TIPO BASICO
      BufferedReader bufflectura=new BufferedReader(new InputStreamReader(System.in));

      //CLICLAMOS EL DESMADRE PARA QUE ESTE PIDIENDO Y ENVIANDOLOS DATOS
      //MEDIANTE LA VARIABLE CADENA QUE RECIBE EL DATO DEL TECLADO Y
      //LO COLOCA EN LA ENTRADA DEL STREAM PARA SU ENVIO EN LA RED
      do{   
         if(control>0)//CONTROLANDO QUE PRIMERO EL SERVER ESCRIBA Y YA DESPUES RECIBA
         {
            cadena1=entrada.readUTF();
         }
         //SI EL CONTROL ANTERIOR NO SE LLEVA ACABO, EL SERVER QUEDARA ESPERANDO
         //UN MENSAJE IMPIDIENDO EL AVANCE DEL SCRIPT

         //VALIDANDO LA SALIDA SI SE RECIBE EL PUTO salir
         if(cadena1.equals("salir"))
         {
            break;
         }
         else
         {
            System.out.println("RECIBIENDO MENSAJE: "+cadena1);

         }
         
         //PEDIR MENSAJE A ENVIAR
         System.out.print("MENSAJE: ");
         cadena0=bufflectura.readLine();
         control++;     
     
         //SE ESCRIBE EL MENSAJE, writeUTF ES PARA CADENAS, writeInt PARA NUMEROS, ETC
         salida.writeUTF(cadena0);
     
         //VALIDANDO LA SALIDA HASTA QUE SE ESCRIBA EL PUTO salir
         if(cadena0.equals("salir"))
         {
            break;
         }
         else
         {
            System.out.println("****MENSAJE ENVIADO****");         
         }
      }while(true);   

      //CERRANDO EL SOCKET
      cliente.close();//SOCKET ENCARGADO DE LA CONEXION CON EL CLIENTE   
      punto.close();//SOCKET ENCARGADO DE ACEPTAR CLIENTES
   }
}




A KI VA EL CODIGO DEL SCRIPT CLIENTE
//SCRIPT CLIENTE.JAVA ESTE SE CONECTARA CON EL SERVIDOR
import java.io.*;//NECESARIA PARA EL MANEJO DE ENTRADA Y SALIDA DE DATOS
import java.net.*;//NECESARIA PARA EL MANEJO DE SOCKETS

public class cliente
{
   public static void main(String arg[])
   {
      new cliente(); //CREANDO EL OBJETO CLASE CLIENTE
   }
   
   //CONSTRUCTOR
   public cliente()
   {
         //SOLO PARA EFECTOS DE APRENDER EXCEPCIONES MANEJE EN ESTE CASO EL TRY
       //PERO DE IGUAL FORMA SE PUDO HABER MANEJADO COMO SE HIZO EN EL SCRIPT DEL SERVER
       //AGREGANDO throws IOException DESPUES DEL main() Y ELIMINANDO EL USO DE
     //UN CONSTRUCTOR, ES DECIR, AGREGANDO TODO EL CODIGO DENTRO DEL MISMO main()
     try{
           //DECLARACION DE VARIABLES
      String cadena0,cadena1="";

      //CREANDO LA CONEXION AL HOST ESPECIFICADO Y SU RESPECTIVO PUERTO EN QUE ESCUCHA
      Socket punto=new Socket("localhost",35557);
      System.out.println("CONECTADO");
     
      //SE DEFINE UN FLUJO DE ENTRADA Y SALIDA CON O SOBRE EL SOCKET CREADO
      DataInputStream entrada=new DataInputStream(punto.getInputStream());
      DataOutputStream salida=new DataOutputStream(punto.getOutputStream());
     
      //PARA PODER ALMACENAR UN STRING ES NECESARIO CREAR LO SIGUIENTE
      //EL CONSTRUCTOR DE BUFFEREDREADER RECIBE UN FLUJO DE ENTRADA STREAM DE TIPO BASICO
      BufferedReader buff=new BufferedReader(new InputStreamReader(System.in));

      //CICLAMOS EL DESMADRE PARA QUE ESTE RECIBIENDO LOS DATOS SIN PERDER SU CONEXION   
      //HASTA QUE RECIBA COMO DATO EL STRING exit
      do{
     
         //SE LEEN LOS DATOS DEL FLUJO DE ENTRADA (ENVIADOS POR EL SERVIDOR)
         cadena0=entrada.readUTF();
         //VALIDANDO LA SALIDA SI SE RECIBE EL PUTO salir
         if(cadena0.equals("salir"))
         {
            break;
         }else
         {
            System.out.println("RECIBIENDO MENSAJE: "+cadena0);
         }
     
         //ENVIANDO MENSAJE
         System.out.print("MENSAJE: ");
         cadena1=buff.readLine();
         salida.writeUTF(cadena1);

         //VALIDANDO LA SALIDA HASTA QUE SE ESCRIBA EL PUTO salir
         if(cadena1.equals("salir"))
         {
            break;
         }
         else
         {
            System.out.println("****MENSAJE ENVIADO****");           
         }
      }while(true);
      punto.close();//CERRANDO CONEXION DEL SOCKET
     }catch(Exception e)
     {
      e.printStackTrace();//TRATA LA EXCEPCION ARROJANDO EL POSIBLE ERROR
                   //BIEN PUEDE NO IR NADA UNICAMENTE catch(Exception){}   
     }
   }//FIN DEL CONSTRUCTOR
}



Espero les divierta de algo aunqeu sea algo muy simple,,
saludos.


En línea

THE DEATH IS JUST THE BEGIN
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda programacion java en EJB's
Java
charlie663 0 2,256 Último mensaje 26 Enero 2011, 00:39 am
por charlie663
Programación en java problema con jdialogos
Java
Jepe auquilla 0 1,879 Último mensaje 25 Marzo 2011, 04:26 am
por Jepe auquilla
Programacion en java
Java
Shakos 6 3,842 Último mensaje 4 Abril 2011, 11:52 am
por Isótopo
Programacion Java pra linux
Programación General
F0L3 1 2,148 Último mensaje 19 Agosto 2011, 13:14 pm
por Valkyr
Java o Programacion Web?
Programación General
cacara 9 5,329 Último mensaje 18 Febrero 2012, 17:29 pm
por RyogiShiki
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines