From fff2b72ecdd1d2f5157397bd74c0ccaa78159b66 Mon Sep 17 00:00:00 2001 From: darkress <30271678+DarkressX@users.noreply.github.com> Date: Sat, 10 Jun 2023 02:02:59 +0200 Subject: [PATCH] implemented Multithreading --- de/darkress/pixelfood/Main.java | 76 +++++++++++++++++++++++++-------- 1 file changed, 59 insertions(+), 17 deletions(-) diff --git a/de/darkress/pixelfood/Main.java b/de/darkress/pixelfood/Main.java index f2c706f..f97c654 100644 --- a/de/darkress/pixelfood/Main.java +++ b/de/darkress/pixelfood/Main.java @@ -7,6 +7,32 @@ import java.io.*; import java.net.*; import java.util.ArrayList; + +class Worker extends Thread { + Socket socket; + String[] pixelArray; + public Worker(String HOSTNAME, int PORT, String[] pixelArray) { + try { + this.socket = new Socket(HOSTNAME, PORT); + } catch (IOException e) { + e.printStackTrace(); + } + this.pixelArray = pixelArray; + } + + public void run() { + while(true) { + for(int i = 0; i < pixelArray.length; i++) { + byte[] payload = pixelArray[i].getBytes(); + try { + socket.getOutputStream().write(payload); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + } + } +} class Main { private static BufferedImage processImage(String imageFile) { @@ -21,11 +47,11 @@ class Main return null; } - private static ArrayList prepareArray(BufferedImage image, int xOffset, int yOffset) { - ArrayList pixelArray = new ArrayList<>(); + private static String[] prepareArray(BufferedImage image, int xOffset, int yOffset) { int width = image.getWidth(); int height = image.getHeight(); + ArrayList pixelArray = new ArrayList<>(); // Iterate over each pixel for (int y = 0; y < height; y++) { @@ -35,22 +61,21 @@ class Main // Extract individual color components int alpha = (pixel >> 24) & 0xFF; - int red = (pixel >> 16) & 0xFF; - int green = (pixel >> 8) & 0xFF; - int blue = pixel & 0xFF; String rgbValue = String.format("%06X", (pixel & 0xFFFFFF)); String messageParameters = String.format("PX %s %s %s\n", x+xOffset, y+yOffset, rgbValue); if(alpha != 0) { pixelArray.add(messageParameters); } - - // Print RGBA values - System.out.println("Pixel at (" + x + ", " + y + "):"); - System.out.println(rgbValue); } } - return pixelArray; + String[] payloadArray = new String[pixelArray.size()]; + for(int i = 0; i < payloadArray.length; i++) + { + payloadArray[i] = pixelArray.get(i); + } + + return payloadArray; } //Syntax blabla.jar x y Hostname Port Image.png @@ -63,20 +88,37 @@ class Main // Read the PNG file BufferedImage image = processImage(imageName); - ArrayList pixelArray = prepareArray(image, xOffset, yOffset); + String[] pixelArray = prepareArray(image, xOffset, yOffset); - try { + Worker worker0 = new Worker(HOSTNAME, PORT, pixelArray); + /*Worker worker1 = new Worker(HOSTNAME, PORT, pixelArray); + Worker worker2 = new Worker(HOSTNAME, PORT, pixelArray); + Worker worker3 = new Worker(HOSTNAME, PORT, pixelArray); + Worker worker4 = new Worker(HOSTNAME, PORT, pixelArray); + Worker worker5 = new Worker(HOSTNAME, PORT, pixelArray); + Worker worker6 = new Worker(HOSTNAME, PORT, pixelArray); + Worker worker7 = new Worker(HOSTNAME, PORT, pixelArray);*/ + + + worker0.start(); + /*worker1.start(); + worker2.start(); + worker3.start(); + worker4.start(); + worker5.start(); + worker6.start(); + worker7.start();*/ + + /*try { Socket socket = new Socket(HOSTNAME, PORT); - //PrintWriter out = new PrintWriter(socket.getOutputStream(), true); while(true) { - for(int i = 0; i < pixelArray.size(); i++) { - //out.println(pixelArray.get(i)); - byte[] payload = pixelArray.get(i).getBytes(); + for(int i = 0; i < pixelArray.length; i++) { + byte[] payload = pixelArray[i].getBytes(); socket.getOutputStream().write(payload); } } } catch (IOException e) { e.printStackTrace(); - } + }*/ } }