Skip to content
Snippets Groups Projects
Commit f0765318 authored by Rafi's avatar Rafi
Browse files

Added Server and Client Functionality.

parent 17df02dc
No related branches found
No related tags found
No related merge requests found
package com.example.schedulerapp;
import java.io.*;
import java.net.*;
public class ReceiveThread {
private BufferedReader reader;
private Socket socket;
public ReceiveThread(Socket socket) {
this.socket = socket;
try {
InputStream input = socket.getInputStream();
reader = new BufferedReader(new InputStreamReader(input));
} catch (IOException error) {
System.out.println("Error getting input stream: " + error.getMessage());
error.printStackTrace();
}
}
public void run() {
while(true) {
try {
String response = reader.readLine();
// Split response by delimiter '/' then find out what it means.
} catch (IOException error) {
System.out.println("Error reading from server: " + error.getMessage());
error.printStackTrace();
break;
}
}
}
}
package com.example.schedulerapp;
import java.net.*;
import java.io.*;
public class ScheduleClient {
private String hostname;
private int port;
private String userName;
private Socket socket;
private PrintWriter writer;
public ScheduleClient(String hostname, int port) {
this.hostname = hostname;
this.port = port;
try {
this.socket = new Socket (hostname, port);
System.out.println("Connected to the scheduling server");
//new ReceiveThread(socket, this).start();
OutputStream output = this.socket.getOutputStream();
this.writer = new PrintWriter(output, true);
} catch (UnknownHostException error) {
System.out.println("Server not found: " + error.getMessage());
} catch (IOException error) {
System.out.println("I/O Error: " + error.getMessage());
}
}
void addEmployee(String first_name, String last_name) {
writer.println("addEmployee/" + first_name + "/" + last_name);
}
void removeEmployee(String first_name, String last_name) {
writer.println("removeEmployee/" + first_name + "/" + last_name);
}
public static void main(String[] args) {
ScheduleClient client = new ScheduleClient("localhost", 8989);
client.addEmployee("Rafi", "Zereselasie");
client.removeEmployee("Rafi", "Zereselasie");
}
}
package com.example.schedulerapp;
import java.io.*;
import java.net.*;
import java.util.*;
public class ScheduleServer {
private Model model;
private int port;
private Set<UserThread> userThreads = new HashSet<>(); // notify when there are changes
public ScheduleServer(int port) {
this.port = port;
this.model = new Model();
}
public void execute() {
try (ServerSocket serverSocket = new ServerSocket(port)) {
System.out.println("Server is listening on port " + port);
while (true) {
Socket socket = serverSocket.accept();
UserThread newUser = new UserThread(socket, this, this.model);
userThreads.add(newUser);
newUser.start();
}
} catch (IOException error) {
System.out.println("Error in the server :" + error.getMessage());
error.printStackTrace();
}
}
void broadcast(String message) {
for (UserThread aUser : userThreads) {
aUser.sendMessage(message);
}
}
void removeUser(UserThread aUser) {
userThreads.remove(aUser);
}
public static void main(String[] args) {
ScheduleServer server = new ScheduleServer(8989);
server.execute();
}
}
package com.example.schedulerapp;
import java.io.*;
import java.net.*;
/**
* This thread handles connection for each connected client, so the server
* can handle multiple clients at the same time.
*
* @author www.codejava.net
*/
public class UserThread extends Thread {
private Socket socket;
private ScheduleServer server;
private PrintWriter writer;
private Model model;
public UserThread(Socket socket, ScheduleServer server, Model model) {
this.socket = socket;
this.server = server;
this.model = model;
}
public void run() {
try {
InputStream input = socket.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
OutputStream output = socket.getOutputStream();
writer = new PrintWriter(output, true);
String serverMessage;
String clientMessage;
do {
clientMessage = reader.readLine();
String[] args = clientMessage.split("/");
switch (args[0]) {
case "addEmployee":
if(args.length == 3){
model.staff.addEmployee(args[1], args[2]);
}
break;
case "removeEmployee":
try {
model.staff.removeEmployee(Integer.parseInt(args[1]));
} catch (NumberFormatException e) {
System.out.println("Client Message Error: " + clientMessage);
}
break;
}
} while (!clientMessage.equals("logout"));
server.removeUser(this);
socket.close();
} catch (IOException ex) {
System.out.println("Error in UserThread: " + ex.getMessage());
ex.printStackTrace();
}
}
/**
* Sends a message to the client.
*/
void sendMessage(String message) {
writer.println(message);
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment