-
Notifications
You must be signed in to change notification settings - Fork 0
/
Client.java
86 lines (81 loc) · 3.84 KB
/
Client.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.net.Socket;
import java.nio.ByteBuffer;
import java.util.Scanner;
class Client extends JFrame {
static Image global_img;
public void paint(Graphics g) {
super.paint(g);
Image img = global_img;
g.drawImage(img, 50, 50, this); //fetching image using bytes
}
public static void main(String[] argv) throws Exception {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter the number of nodes");
int numberOfNodes = scanner.nextInt(); //Input the number of nodes
if (numberOfNodes < 3 || numberOfNodes > 10) {
System.out.println("Value out of range"); //Given range for number of nodes = [3, 10]
}
int[][] adjacencyMatrix = new int[numberOfNodes][numberOfNodes];
System.out.println("Enter adjacency matrix");
for (int i = 0; i < numberOfNodes; i++) {
for (int j = 0; j < numberOfNodes; j++) {
adjacencyMatrix[i][j] = scanner.nextInt(); //Input adjacency matrix
}
}
int pathLength, sourceNode, destinationNode;
char sourceNodeChar, destinationNodeChar;
System.out.println("Enter path length");
pathLength = scanner.nextInt(); //Input path length
System.out.println("Enter source node");
sourceNodeChar = scanner.next().charAt(0); //Input source node as character
sourceNode = (int) Character.toUpperCase(sourceNodeChar) - (int) 'A'; //converting source node to integer for use in code
//System.out.println(sourceNode);
System.out.println("Enter destination node");
destinationNodeChar = scanner.next().charAt(0); //Input destination node as character
destinationNode = (int) Character.toUpperCase(destinationNodeChar) - (int) 'A'; //converting destination node to integer for use in code
//System.out.println(destinationNode);
try {
Socket clients = new Socket("127.0.0.1", 6789);
DataInputStream ip = new DataInputStream(clients.getInputStream());
DataOutputStream op = new DataOutputStream(clients.getOutputStream());
op.writeInt(numberOfNodes);
op.flush();
for (int i = 0; i < numberOfNodes; i++) {
for (int j = 0; j < numberOfNodes; j++) {
op.writeInt(adjacencyMatrix[i][j]);
}
}
op.flush();
op.writeInt(pathLength);
op.flush();
op.writeInt(sourceNode);
op.flush();
op.writeInt(destinationNode);
op.flush();
int isPath = ip.readInt();
if (isPath == 1) {
System.out.println("Yes, there exists a path of length " + pathLength + " from " + Character.toUpperCase(sourceNodeChar) + " to " + Character.toUpperCase(destinationNodeChar));
} else {
System.out.println("No, there doesn't exist a path of length " + pathLength + " from " + Character.toUpperCase(sourceNodeChar) + " to " + Character.toUpperCase(destinationNodeChar));
}
byte[] sizeAr = new byte[4];
ip.read(sizeAr);
int size = ByteBuffer.wrap(sizeAr).asIntBuffer().get();
byte[] imageAr = new byte[size];
ip.read(imageAr);
global_img = ImageIO.read(new ByteArrayInputStream(imageAr));
JFrame frame = new Client();
frame.setTitle("Frame Client");
frame.setSize(600, 600);
frame.setVisible(true);
System.out.println("Image Received");
clients.close(); //close the connection
} catch (IOException ex) {
}
}
}