Java: Generador de Red (random)

Aqui tenemos un clasico, para los que recuerden el puerto 19/TCP (chargen), la version Java (algo más aleatoria):

import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * Generate random text [0-9a-zA-Z], width 79 columns, over Socket
 * Inspired in http://en.wikipedia.org/wiki/Character_Generator_Protocol 
 */
public class RandomTextGenerator {
	private static final int CHARGEN_TCP = 19;
	private static final char[] chars = "0123456789abcdefefghijklmnopqrstuvwxyzABCDEFEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
	private static final ExecutorService threadPool = Executors.newCachedThreadPool();
	//
	public static void main(String[] args) throws Exception {
		ServerSocket listen = new ServerSocket(CHARGEN_TCP);
		System.out.println("Listen in: " + listen);
		while (true) {
			final Socket sock = listen.accept();
			System.out.println("New connection from: " + sock);
			threadPool.submit(new Runnable() {
				public void run() {
					Random rand = new Random();
					OutputStream os = null;
					int count = 0;
					try {
						os = new BufferedOutputStream(sock.getOutputStream(), 80);
						while (true) {
							final int n = (rand.nextInt() & 0xFFFF);
							os.write(chars[n % chars.length]);
							count++;
							if ((count % 79) == 0) {
								os.write(10);
								os.flush();
							}
						}
					} catch (IOException e) {
						System.out.println(e.toString());
					}
					try { os.close(); } catch(Exception ign) {}
					try { sock.close(); } catch(Exception ign) {}
				}
			});
		}
	}
}

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: