Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 0 additions & 27 deletions Class1/Client.java

This file was deleted.

1 change: 1 addition & 0 deletions Class1/Client/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.class
16 changes: 16 additions & 0 deletions Class1/Client/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
## CLIENT USAGE:

From src dir to compile and execute do:

`$ javac main/java/*.java`

`$ java main/java/Main`

### CL arguments:

`-0`,`-1`,`-2`,`-3`,`-4`,`-5`,`-6` to execute specfic task.
Only use one argument per execution.

If executing exercise `-5`, an additional argument can be given which will be the number of random numbers given from client to server. (default=5)

If exectuing exercse `-6`, an additioanl argument can be given which will be the name of client. (default="Bob")
54 changes: 54 additions & 0 deletions Class1/Client/src/main/java/Client.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package main.java;

import java.util.*;
import java.util.logging.Logger;
import java.io.*;
import java.net.*;

class Client {
private Scanner reader;
private PrintWriter writer;
private Socket internalSocket;

Logger logger = Logger.getLogger(this.getClass().getName());

public Client(String hostname, int port) {
try {
internalSocket = new Socket(hostname, port);
reader = new Scanner(internalSocket.getInputStream());
writer = new PrintWriter(internalSocket.getOutputStream());
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

public void sendMsg(String message) {
logger.info("Sending \"" + message + "\" to server");
writer.println(message);
writer.flush();
}

public String readMsg() {
//Intentionally blocking request
while (!reader.hasNext()) {
}
String message = reader.nextLine();
logger.info("Received \"" + message + "\" from server");
return message;
}

public void echoFunction(String message) {
// Send msg and get log response
sendMsg(message);
readMsg();
}

public void sendMsg(int message) {
logger.info("Sending \"" + message + "\" to server");
writer.println(message);
writer.flush();
}

}
39 changes: 39 additions & 0 deletions Class1/Client/src/main/java/FileIO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package main.java;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class FileIO {

private BufferedReader reader;

public FileIO(String filename) {
try {
reader = new BufferedReader(new FileReader(filename));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}

List<Integer> readNumbers() {
String line;
ArrayList<Integer> list = new ArrayList<>();
try {
while ((line = reader.readLine()) != null) {
String[] tokens = line.split(",");
for (String token : tokens) {
list.add(Integer.parseInt(token));
}

}
} catch (IOException e) {
e.printStackTrace();
}
return list;
}

}
152 changes: 152 additions & 0 deletions Class1/Client/src/main/java/Main.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
package main.java;

import java.util.ArrayList;
import java.util.Scanner;

public class Main {

public static final String END_TOKEN = "end";
public static final String EXIT_TOKEN = "exit";

public static void main(String[] args) {
int exNum = 0;
String chatname = "Bob"; // default name
int giveRandom = 5;

if (args.length > 0) {
switch (args[0]) {
case "-0":
exNum = 0;
break;
case "-1":
exNum = 1;
break;
case "-2":
exNum = 2;
break;
case "-3":
exNum = 3;
break;
case "-4":
exNum = 4;
break;
case "-5":
exNum = 5;
if (args.length == 2) {
giveRandom = Integer.parseInt(args[1]);
}
break;
case "-6":
exNum = 6;
if (args.length == 2) {
chatname = args[1];
}
break;
default:
System.out.println("Error understanding commandline argument, exiting...");
return;
}

}
Client client = new Client("localhost", 12345);
// Exercise 0
if (exNum == 0) {
client.echoFunction("echo this back");
return;
}
// Exercise 1
if (exNum == 1) {

client.sendMsg("4");
String answer = client.readMsg();
System.out.println(answer);
return;
}
// Exercise 2
if (exNum == 2) {

FileIO fileHandler = new FileIO("main/resources/numberfile.txt");
ArrayList<Integer> fileNumbers = (ArrayList<Integer>) fileHandler.readNumbers();

for (int number : fileNumbers) {
client.sendMsg(number);
}
client.sendMsg(END_TOKEN);

for (int i = 0; i < fileNumbers.size(); i++) {
String recv = client.readMsg();
System.out.println(recv);
}

return;
}
// Exercise 3
if (exNum == 3) {
String filename = "serverfile.txt";
client.sendMsg(filename);
System.out.println(client.readMsg());
}

// Exercise 4
if (exNum == 4) {
System.out.println("Current connection count: " + client.readMsg());
return;
}
// Exercise 5

if (exNum == 5) {
System.out.println("Generating " + giveRandom + " random numbers and sending to server.");
for (int i = 0; i < giveRandom; i++) {
// some number between 0 and 20
int num = (int) (Math.random() * 21);
client.sendMsg(num);
}
client.sendMsg(EXIT_TOKEN);
return;
}

// Exercise 6

if (exNum == 6) {
boolean isStopped = false;
client.sendMsg(chatname);
// One thread for reading
new Thread() {
@Override
public void run() {
while (!Thread.currentThread().isInterrupted()) {
String msg = client.readMsg();
System.out.println("Got message:");
System.out.println(msg);
}
}
}.start();
// One thread for writing
new Thread() {
@Override
public void run() {
Scanner sc = new Scanner(System.in);
while (!Thread.currentThread().isInterrupted()) {
String outgoing = sc.nextLine();
client.sendMsg(outgoing);
System.out.println("Sent message:");
System.out.println(outgoing);
}
sc.close();
}
}.start();

while (!isStopped) {
try {
System.out.println("Conversation open for 120 seconds.");
Thread.sleep(120000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return;
}

}

}
2 changes: 2 additions & 0 deletions Class1/Client/src/main/resources/numberfile.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
1,2,3
4,5
53 changes: 0 additions & 53 deletions Class1/Exercises/README.md

This file was deleted.

26 changes: 0 additions & 26 deletions Class1/Server.java

This file was deleted.

1 change: 1 addition & 0 deletions Class1/Server/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.class
Loading