eko nº4:(Eko#04PD-06.txt):11/07/2002 << Back To eko nº 4
<-[-]-[-]-[E]-[Z]-[K]-[R]-[A]-[C]-[H]-[O]-[ ]-[T]-[E]-[A]-[M]-[-]-[-]-> > Eko Magazine #04 Post Devaluation, La Odisea del Patacon 2002 < <-------- [ El-Ju3z[] #Col ] ----------- [ el-ju3z@flashmail.com ] ---> > Jodiendo con Java (Sockets) ...java hacka... < Ahh.. por fin... este texto me tenia las pelotas por el piso y la verdad es que entre el trabajo, el estudio y la paj.. estoy hecho un zombie, no puedo creer que pude terminar esto. Lo que vamos a ver a continuacion es un mini tutorial de socket Java, orientado a crear servidores (de irc o lo que se les ocurra) en especial para hacer esos chat en la web o para hacerce algun tool h4x0r (un java trojan o back door) Tambien cabe aclarar que este texto es tan original como un cuadro de picasso asi le cierro la boca a los que dicen que los ezines siempre es lo mismo pero explicado diferente .. eko es 31337 (jeje soy chupamedias????) NOTA: este texto esta orientado a gente con conocimientos previos en Java (minimos) hablando en criollo, este texto es para mal0rs ;) jeje INTRODUCCION ~~~~~~~~~~~~ Java es un lenguaje seguro, multiplataforma y orientado a internet y redes asi que queda en ustedes el querer o no aprender Java ;) Java proporciona las clases ServerSocket y Socket los cuales tienen asociado un port definido por el programador para poder entablar comunicacion con diferentes servicios y protocolos. Por ejemplo: ServerSocket ---> se usa para el servidor Socket ---------> se usa para el cliente El socket servidor queda a la escucha de un cliente por medio del metodo "accept()" el cual permite entablar la comunicacion propiamente dicha. por ejemplo: si queremos codear un server que escuche por el puerto 10: ju3zServer coneccion = new ServerSocket(10); --> ahi esta el puerto Socket cliente = conexion.accept(); --> para recibir al cliente ahora el cliente lo que tiene que hacer es conectarse al port 10 y comenzar a interactuar: Socket conexion = new Socket (direccion, 10); --> ahi se conecta al server Una vez establecida la coneccion, las clases y metodos para interactuar son: la clase "URLConnection" y la clase "Socket" disponen de los metodos: "getInputStream" y "getOutputStream" que son por donde fluyen los datos. Tambien les comento que un DataInputStream permite leer datos que llegan a travez de la red y un DataOutputStream no sirve para enviar datos al host. CREANDO EL PROGRAMA SERVIDOR ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ El siguiente ejemplo necesita de una red local o internet para poder comunicar con el cliente. (o bien ejecutarlos en la misma maquina) import java.io.*; import java.net.*; Public class Ju3z-server { public static void main(string argv[]) { ServerSocket servidor; Socket cliente ; int NumCliente = 0 ; try { servidor = new ServerSocket (5); do { numCliente++; cliente = servidor.accept(); System.out.println("llego el cliente"+numCliente); PrintStream ps = new PrintStream (cliente.getOutputStream()); ps.println("vos sos mi cliente"+numCliente); cliente.close(); } while (true); } catch (Exception e) { e.printStackTrace(); } } } Bueno, no crean que tienen lagunas mentales y no entendieron nada, porque ahora voy a explicar detalladamente este despelote: *PrintStream: lo uso para enviar los datos al cliente *PrintStream.println: maneja los datos como System.out.println y hay que indicarle el stream por el cual manda los datos (por OutputStream) ...y lo demas es lo que explique mas arriba (antes del codigo) Bien, ya se pude decir que con estos minimos conocimientos se pueden armar algun monitor de conecciones bien cutre o un back door ;) o cualquier cosa sencilla, pero como muchos de ustedes son elite superstar, vamos a codear un chat java de esos para usar desde la web para mejorar sus paginas web :))) (un server mejor dicho) EJEMPLO PRACTICO DE UN JAVA CHAT BIEN COOL ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ NOTA: la parte de clientes la dejo para otra ocasion, ahora vamos a armar un "server" (ChatProject.java) y el objeto EkoChat.java ;) en conclusion esto es un programa "server" para ser accedido mediante un cliente ya sea por un javascript u otro programa java "cliente". --------------------------- ChatProject.java------------------------------- public class ChatProject { public static void main(String argv[]) { EkoChat servidor = new ChatServidor(6667); } } // compilar con: "javac ChatProject.java" --------------------------------------------------------------------------- Ahora solo resta hacer el objeto EkoChat ... public class EkoChat { public class EkoChat(int puerto) { ESTABLECER_CONECCION_SERVIDOR ; do { ESPERAR_CLIENTE; ARRANCAR_THREAD_PARA_CLIENTE; AGREGAR_CLIENTE_A_LISTA; } while (true); public synchronized void sendAll(...) { for (int i=0; i<CANT_CLIENTES_VIVOS; i++) { ENVIAR_MENSAJE_AL_THREAD_DEL_CLIENTE_i; } } public void killClient(...) { SACAR_CLIENTE_DE_LISTA; MATAR_THREAD_DEL_CLIENTE; } } y por ultimo .. ya me olvidaba jeje tengo que aflojarle a la manito he he .. falta el thread!! (el que se ejecuta para cada cliente) ... ahi va el codigo: -------------------------------- eko.java ------------------------------- public class ekoThread extends Thread { boolean running; public ekoThread(referencia al EkoChat, etc..){ ABRIR_STREAM_DE_ENTRADA; ABRIR_STREAM_DE_SALIDA ; running = true; } public void run() { while (running) { ESPERAR_MENSAJE_DE_STREAM_DE_ENTRADA; (SI SE CORTA LA CONECCION , AVISAR AL EkoChat PARA QUE MATE...!); PASAR_MENSAJE_AL_EkoServidor; } } public void sendMsg(...) { ENVIAR_MENSAJE_VIA_STREAM_DE_SALIDA; } } ---------------------------------- fin! ----------------------------------- NOTA: para non-programmers je, el thread es una clase basica de Java que implementa la interfase Runnable y dispone de unos cuantos metodos por defecto. (para usarlos debemos crearlos como instancias y ponerlos a andar) CONCLUSIONES: si usas JAVA la comida save mejor y la musica suena mejor, .. jeje y ademas no suckea tanto como otros lenguajes ;) #chivo: comprenme cuentas shell!! denme de comer! community.ezkracho.com.ar/el-ju3z > Eko Magazine #04 Post Devaluation, La Odisea del Patacon 2002 < > Jodiendo con Java (Sockets) ...java hacka... < [EOF]