JSFiddle - React, Tailwind, and code Playground
HTML
package socket_example_1row;
import java.io.*;
import java.util.Scanner;
import java.util.regex.Pattern;
import matrix.*;
public class Coordinator {
Connection conn;
int dim;
int[][] a;
int[][] b;
int[][] c;
int numNodes;
DataInputStream[] disWorkers;
DataOutputStream[] dosWorkers;
public Coordinator(int n, int numNodes) {
this.dim = n;
a = new int[n][n];
b = new int[n][n];
c = new int[n][n];
this.numNodes = numNodes;
}
void configurate(int portNum) {
try {
conn = new Connection(portNum);
disWorkers = new DataInputStream[numNodes];
dosWorkers = new DataOutputStream[numNodes];
String[] ips = new String[numNodes];
int[] ports = new int[numNodes];
for (int i=0; i<numNodes; i++ ) {
DataIO dio = conn.acceptConnect();
DataInputStream dis = dio.getDis();
int nodeNum = dis.readInt(); //get worker ID
ips[nodeNum] = dis.readUTF(); //get worker ip
ports[nodeNum] = dis.readInt(); //get worker port #
disWorkers[nodeNum] = dis;
dosWorkers[nodeNum] = dio.getDos(); //the stream to worker ID
dosWorkers[nodeNum].writeInt(dim); //assign matrix dimension (height)
int width = (nodeNum<numNodes-1) ? dim/numNodes : dim/numNodes+dim%numNodes;
dosWorkers[nodeNum].writeInt(width); //assign matrix width
}
for (int w=0; w<numNodes; w++) {
int LEFT1 = (w+numNodes-1)%numNodes; //shift to (send)
dosWorkers[w].writeUTF(ips[LEFT1]); // left worker's ip
dosWorkers[w].writeInt(ports[LEFT1]);
int RIGHT1 = (w+1)%numNodes; //receive from
dosWorkers[w].writeUTF(ips[RIGHT1]); // right worker's ip
dosWorkers[w].writeInt(ports[RIGHT1]);
}
} catch (IOException ioe) {
System.out.println("error: Coordinator assigning neighbor infor.");
ioe.printStackTrace();
}
}
void initializeA() {
int n = a.length;
for (int i=0; i<n; i++) {
int step = i+1;
int[] newRow = new int[n];
for (int j=0; j<n;...
CSS
package matrix;
public class MatrixMultiple {
// create an n by n matrix for displaying
public static int[][] createDisplayMatrix(int n) {
int[][] matrix = new int[n][n];
int up = (int)Math.pow(10, (int)Math.log10(n)+1);
for (int row = 1; row <= n; row++) {
for (int col = 1; col <= n; col++) {
matrix[row - 1][col - 1] = row * up + col;
}
}
return matrix;
}
// create an n by n unit matrix
public static int[][] createUnitMatrix(int n) {
int[][] matrix = new int[n][n];
for (int row = 0; row < n; row++) {
for (int col = 0; col < n; col++) {
matrix[row][col] = 0;
}
matrix[row][row] = 1;
}
return matrix;
}
// create an n by n unit matrix
public static int[][] createRandomMatrix(int n) {
int[][] matrix = new int[n][n];
for (int row = 0; row < n; row++) {
for (int col = 0; col < n; col++) {
matrix[row][col] = (int)(Math.random()*1000);
}
}
return matrix;
}
// display n by n "display matrix"; n is limited to 660.
public static void displayMatrix(int[][] mat) {
int n = mat.length;
int m = mat[0].length;
if (n <= 660) {
int digit = (int) Math.log10(n)*2+3;
for (int row = 0; row < n; row++) {
for (int col = 0; col < m; col++) {
String numStr = String.format("%"+digit+"d", mat[row][col]);
System.out.print(numStr);
}
System.out.println();
}
} else {
System.out.println("The matrix is too big to display on screen.");
}
}
// display n by n matrix with maximum value of d digits.
public static void displayMatrix(int[][] mat, int d) {
int n = mat.length;
int m = mat[0].length;
for (int row = 0; row < n; row++) {
for (int col = 0; col < m; col++) {
String numStr = String.format("%"+(d+2)+"d", mat[row][col]);
System.out.print(numStr);
}
System.out.println();
}
}
// a X b
public static int[][] multiplyMatrix(int[][] a, int[][] b) {
int n = a.length;
int[][] c = new int[n][n];
for (int row = 0; row < n;...
JavaScript
package socket_example_1row;
import java.io.*;
import java.net.*;
class Connection {
String name;
int port;
ServerSocket servsoc;
public Connection(int portNum) {
this.port = portNum;
try {
servsoc = new ServerSocket(port);
} catch (IOException ioe) {
System.out.println("Could not listen on port: " + port + ", " + ioe);
System.exit(1);
}
}
DataIO acceptConnect() {
DataIO dio = null;
while (true) {
try {
Socket sc = servsoc.accept();
DataInputStream dis = new DataInputStream(sc.getInputStream());
DataOutputStream dos = new DataOutputStream(sc.getOutputStream());
dio = new DataIO(dis, dos);
break;
} catch (IOException ioe) {
System.out.println("Fail in connecting to worker node.");
try {Thread.sleep(2000); } catch (Exception e) {System.out.println("Try again."); }
}
}
return dio;
}
DataInputStream accept2read() {
DataInputStream dis = null;
while (true) {
try {
Socket sc = servsoc.accept();
dis = new DataInputStream(sc.getInputStream());
break;
} catch (IOException ioe) {
System.out.println("Fail in connecting to worker node.");
try {Thread.sleep(2000); } catch (Exception e) {System.out.println("Try again."); }
}
}
return dis;
}
DataOutputStream accept2write() {
DataOutputStream dos = null;
while (true) {
try {
Socket sc = servsoc.accept();
dos = new DataOutputStream(sc.getOutputStream());
break;
} catch (IOException ioe) {
System.out.println("Fail in connecting to worker node.");
try {Thread.sleep(2000); } catch (Exception e) {System.out.println("Try again."); }
}
}
return dos;
}
DataIO connectIO(String ip, int port) {
DataIO dio = null;
while (true) {
try {
Socket sc = new Socket(ip, port);
DataInputStream dis = new DataInputStream(sc.getInputStream());
DataOutputStream dos = new DataOutputStream(sc.getOutputStream());
dio = new DataIO(dis, dos);...