-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathServer.java
More file actions
123 lines (106 loc) · 3.49 KB
/
Server.java
File metadata and controls
123 lines (106 loc) · 3.49 KB
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
/**
* @auther Yongchang He
* @profile StuID:11279620 yoh534@usask.ca
* @date 2021-10-09 12:01 p.m.
* @project Assignment1_Chatroom
* @discription
* Server is defined to:
* 1. Start Server and accept multiple clients' connections;
* 2. Create multi-thread object named clientHandler to receive and forward messages;
* 3. Close Server if necessary;
**/
//
public class Server {
// client number (Maximum number) final
public final int maximumClientNumber = 10;
private int currentClientNumber = 0;
public void addCurrentClientNumber(){
currentClientNumber++;
}
public void decCurrentClientNumber(){
currentClientNumber--;
}
public int getCurrentClientNumber() {
return currentClientNumber;
}
// member variable
private final ServerSocket serverSocket;
// constructor to initialize object serverSocket
public Server(ServerSocket serverSocket) {
this.serverSocket = serverSocket;
}
/**
*member method: startServer()
* description: create Thread object clientHandler to interact with multiple clients
*/
public void startServer() {
try {
while (!serverSocket.isClosed()) {
if (currentClientNumber < maximumClientNumber) {
Socket socket = serverSocket.accept();
ClientHandler clientHandler = new ClientHandler(socket);
System.out.println("Connected Client: " + clientHandler.getClientUsername());
Thread thread = new Thread(clientHandler);
thread.start();
addCurrentClientNumber();
} else {
System.out.println("SERVER REACH MAXIMUM LOAD ");
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* member method: closeServerSocket
* description: to close serverSocket
*/
public void closeServerSocket() {
try {
if (serverSocket != null) {
serverSocket.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
/**
* The method is to clear all history message for current use.
*/
public void clearHistoryMsg() {
try {
//File file = new File(dir);
File file = new File(CurrentDir.getDir());
FileWriter fileWriter = new FileWriter(file);
fileWriter.write("");
fileWriter.flush();
fileWriter.close();
} catch (IOException e) {
System.out.println("ERROR in Clear Msg!!");
}
}
/**
*
* @param args default
* @throws IOException
* description: start the server, create port for client to connect, create clientHandlers
* to handle clients' affairs.Close server if necessary.
*/
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(8818);
System.out.println("Server run successfully...\nWaiting for client..");
Server server = new Server(serverSocket);
// clear the history message in the "history.txt"
server.clearHistoryMsg();
// start server
server.startServer();
// close server
server.closeServerSocket();
}
}