3 Commits

Author SHA1 Message Date
darkress
bdcf7bf13d Working slicing 2023-06-11 03:44:10 +02:00
darkress
bf52cfa229 Variable threadcount 2023-06-10 17:15:26 +02:00
darkress
41242bf3ed some try catching (#1)
Co-authored-by: Darkress <30271678+DarkressX@users.noreply.github.com>
Reviewed-on: darkress/PixelFloodClient#1
2023-06-10 16:44:43 +02:00

View File

@@ -9,9 +9,13 @@ import java.util.ArrayList;
class Worker extends Thread { class Worker extends Thread {
String HOSTNAME;
int PORT;
Socket socket; Socket socket;
String[] pixelArray; String[] pixelArray;
public Worker(String HOSTNAME, int PORT, String[] pixelArray) { public Worker(String HOSTNAME, int PORT, String[] pixelArray) {
this.HOSTNAME = HOSTNAME;
this.PORT = PORT;
try { try {
this.socket = new Socket(HOSTNAME, PORT); this.socket = new Socket(HOSTNAME, PORT);
} catch (IOException e) { } catch (IOException e) {
@@ -20,15 +24,21 @@ class Worker extends Thread {
this.pixelArray = pixelArray; this.pixelArray = pixelArray;
} }
@Override
public void run() { public void run() {
while(true) { while(true) {
for(int i = 0; i < pixelArray.length; i++) { try {
byte[] payload = pixelArray[i].getBytes(); for(int i = 0; i < pixelArray.length; i++) {
try { byte[] payload = pixelArray[i].getBytes();
socket.getOutputStream().write(payload); socket.getOutputStream().write(payload);
} catch (IOException e) {
throw new RuntimeException(e);
} }
} catch (IOException e) {
try {
this.socket = new Socket(HOSTNAME, PORT);
} catch (IOException i) {
i.printStackTrace();
}
System.out.println(this.getId() + "just dies. Trying again...");
} }
} }
} }
@@ -47,7 +57,7 @@ class Main
return null; return null;
} }
private static String[] prepareArray(BufferedImage image, int xOffset, int yOffset) { private static ArrayList<String> prepareArray(BufferedImage image, int xOffset, int yOffset) {
int width = image.getWidth(); int width = image.getWidth();
int height = image.getHeight(); int height = image.getHeight();
@@ -69,13 +79,26 @@ class Main
} }
} }
} }
String[] payloadArray = new String[pixelArray.size()]; /*String[] payloadArray = new String[pixelArray.size()];
for(int i = 0; i < payloadArray.length; i++) for(int i = 0; i < payloadArray.length; i++)
{ {
payloadArray[i] = pixelArray.get(i); payloadArray[i] = pixelArray.get(i);
} }
return payloadArray; return payloadArray;*/
return pixelArray;
}
public static String[] prepareThreadArray(ArrayList<String> fullArray, int threadNumber, int threadCount)
{
String[] threadArray = new String[fullArray.size()/threadCount];
int count = 0;
for(int i = (threadNumber*fullArray.size())/threadCount; i < ((threadNumber+1)*fullArray.size())/threadCount; i++)
{
threadArray[count] = fullArray.get(i);
count++;
}
return threadArray;
} }
//Syntax blabla.jar x y Hostname Port Image.png //Syntax blabla.jar x y Hostname Port Image.png
@@ -84,41 +107,23 @@ class Main
final String HOSTNAME = args[2]; final String HOSTNAME = args[2];
final int xOffset = Integer.parseInt(args[0]); final int xOffset = Integer.parseInt(args[0]);
final int yOffset = Integer.parseInt(args[1]); final int yOffset = Integer.parseInt(args[1]);
final String imageName = args[4]; int threadCount = Integer.parseInt(args[4]);
final String imageName = args[5];
// Read the PNG file // Read the PNG file
BufferedImage image = processImage(imageName); BufferedImage image = processImage(imageName);
String[] pixelArray = prepareArray(image, xOffset, yOffset); ArrayList<String> fullArray = prepareArray(image, xOffset, yOffset);
ArrayList<Worker> workerList = new ArrayList<>();
Worker worker0 = new Worker(HOSTNAME, PORT, pixelArray); for(int i = 0; i < threadCount; i++)
Worker worker1 = new Worker(HOSTNAME, PORT, pixelArray); {
Worker worker2 = new Worker(HOSTNAME, PORT, pixelArray); String[] threadArray = prepareThreadArray(fullArray, i, threadCount);
Worker worker3 = new Worker(HOSTNAME, PORT, pixelArray); workerList.add(new Worker(HOSTNAME, PORT, threadArray));
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);
for(int i = 0; i < threadCount; i++)
worker0.start(); {
worker1.start(); workerList.get(i).start();
worker2.start(); }
worker3.start();
worker4.start();
worker5.start();
worker6.start();
worker7.start();
/*try {
Socket socket = new Socket(HOSTNAME, PORT);
while(true) {
for(int i = 0; i < pixelArray.length; i++) {
byte[] payload = pixelArray[i].getBytes();
socket.getOutputStream().write(payload);
}
}
} catch (IOException e) {
e.printStackTrace();
}*/
} }
} }