Proyecto Teleinformática: Maestros-Esclavos
Maestro-Esclavos-AP
INTEGRANTES: Rodríguez Álvaro D.
Villarroel V. Paola A.
MATERIA: Teleinformática
DOCENTE: Alex Villazón
FECHA: 28/06/12
Contenido:
1. Introducción 3
2. Sobre el Protocolo y el Algoritmo 3
3. Códigos Java 3
3.1. Maestro 3
3.2 Esclavos 5
4. Compilación y Ejemplo 8
1. Introducción
El Proyecto Maestro-Esclavos-AP trata deuna generación random de números que se le envían a un Maestro, así como el tamaño total de la cadena de números. También se le envía el número de esclavos a generar. El Maestro llama a los esclavos y genera un número de orden para cada esclavo.
2. Sobre el Protocolo y el Algoritmo
Bueno para explicar mejor el Protocolo, presentamos este gráfico:
Maestro
N Esclavos….…….……….
El protocolo consta en: primero el Maestro recibe 3 parámetros: <puerto> <cantidad de esclavos> <tamaño de cadena>
Después divide esta cadena (equitativamente) y crea sus esclavos, asignándoles un numero de ordenamiento (+1), para finalmente enviarles estaspartes del mensaje inicial. ¿Cómo crea los esclavos?
El Maestro tiene un ServerSocket, para escuchar y crea sockets al recibir la cantidad de esclavos.
Los esclavos se comportan como servidores y reciben este mensaje para ordenarlo y comparar con sus colegas (derecha e izquierda), para cambiar o mantener su número. Los esclavos tienen 2 sockets ServerSocket y Socket, ya que realizan unacomunicación de ida y vuelta entre ellos.
3. Códigos Java
3.1. Maestro
import java.io.*;
import java.net.*;
import java.util.Random;
public class Master {
public static void main(String args[]) throws IOException{
if (args.length != 3 ) {
System.out.println("<SocketInicial><#Esclavos><TamañoArreglo>");
System.exit(-1);
}int port = Integer.valueOf(args[0]).intValue();
int numberOfSlaves = Integer.valueOf(args[1]).intValue();
int length = Integer.valueOf(args[2]).intValue();
int initialSlavePort = port + numberOfSlaves;
String slaveString;
Socket[] connectedSockets = new Socket[numberOfSlaves];
int[] numbers = new int[length];
Socket connectedSocket =null;
System.out.println("Iniciando Ejecucion del Socket");
ServerSocket server = new ServerSocket(port);
int k = 0;
for (int i= 1; i <= numberOfSlaves; i++) {
System.out.println("Esperando el esclavo #"+i);
Random r = new Random();
for (int j= 0; j < numbers.length; j++) {
numbers[j] = r.nextInt(100);}
WriteConfigurationfile(i,initialSlavePort+1,numbers,numberOfSlaves,length);
connectedSocket = server.accept();
connectedSockets[k] = connectedSocket;
initialSlavePort = initialSlavePort +1 ;
k = k + 1;
BufferedReader inFromSlave = new BufferedReader(new InputStreamReader(connectedSocket.getInputStream()));while((slaveString = inFromSlave.readLine()) != null){
System.out.println("entra");
break;
}
}
for (int i= 0; i < connectedSockets.length; i++) {
DataOutputStream outToSlave= new DataOutputStream(connectedSockets[i].getOutputStream());
outToSlave.writeBytes("start"+'\n');
}while(true){
}
}
public static void WriteConfigurationfile(int number, int socket, int[] numbers,int numberOfSlaves, int eslaveArrayLength) throws IOException{
BufferedWriter fileWriter = new BufferedWriter(new FileWriter("ConfigurationFile.txt"));
String numeros = "";
for (int i= 0; i < numbers.length ; i++) {
numeros = numeros +...
Regístrate para leer el documento completo.