Está en la página 1de 10

Actividad Evaluativa - Eje 4

Árboles binarios con socket en java.

Integrante:

Luis Alejandro Rodriguez Cantillo

Profesor: Yashin Alberto Rueda Matos

Fundación Universitaria del Área Andina.

Ingeniería en Sistemas

Modelos de programación

02 de junio 2023
Objetivo

Construir una aplicación que permita crear un árbol binario desde el servidor, con la

información proporcionada por el cliente aplicando socket.

Introducción

El desarrollo de la actividad consiste en establecer una comunicación entre el cliente y el

servidor que permita por parte del cliente enviar 30 datos numéricos enteros de 2 cifras, uno

a uno al servidor y este vaya construyendo un árbol binario con los datos que le envía el

cliente a través de la comunicación por medio de socket, tener en cuenta la forma para

construir árboles binarios vistos en el eje.

Desarrollo
Cliente:
Ejecutamos Servidor.

Ejecutamos Cliente.

Y luego vemos que Servidor conecta y corre, nos muestra los números ingresados.
Código
Servidor:

import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Servidor {


public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(12345);
System.out.println("Servidor iniciado. Esperando conexiones...");

// Espera a que un cliente se conecte


Socket socket = serverSocket.accept();
System.out.println("Cliente conectado.");

// Crea el flujo de entrada de objetos


ObjectInputStream inputStream = new
ObjectInputStream(socket.getInputStream());

// Construye el árbol binario


BinaryTree binaryTree = new BinaryTree();

// Recibe los datos del cliente y construye el árbol


for (int i = 0; i < 30; i++) {
int data = inputStream.readInt();
binaryTree.insert(data);
}

// Imprime el árbol binario construido


System.out.println("Árbol binario construido:");
binaryTree.printInOrder();

// Cierra los flujos y el socket


inputStream.close();
socket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

Cliente:
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.util.Random;

public class Cliente {


public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 12345);
System.out.println("Conexión establecida con el servidor.");
// Crea el flujo de salida de objetos
ObjectOutputStream outputStream = new
ObjectOutputStream(socket.getOutputStream());

// Genera y envía los datos al servidor


Random random = new Random();
for (int i = 0; i < 30; i++) {
int data = random.nextInt(90) + 10; // Genera un número entero de 2 cifras
outputStream.writeInt(data);
outputStream.flush();
}

// Cierra el flujo y el socket


outputStream.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

Árbol:
class Node {
int data;
Node left;
Node right;

public Node(int data) {


this.data = data;
this.left = null;
this.right = null;
}
}

class BinaryTree {
Node root;

public BinaryTree() {
this.root = null;
}

public void insert(int data) {


root = insertRec(root, data);
}

private Node insertRec(Node root, int data) {


if (root == null) {
root = new Node(data);
return root;
}

if (data < root.data)


root.left = insertRec(root.left, data);
else if (data > root.data)
root.right = insertRec(root.right, data);

return root;
}

public void printInOrder() {


printInOrderRec(root);
}

private void printInOrderRec(Node root) {


if (root != null) {
printInOrderRec(root.left);
System.out.print(root.data + " ");
printInOrderRec(root.right);
}
}
}

Bibliografía.
https://docs.oracle.com
Java2Blog - LinkedList in Java: https://java2blog.com/linkedlist-in-java/

https://docs.oracle.com/javase/tutorial/networking/sockets/index.html

También podría gustarte