-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathClient.java
More file actions
93 lines (89 loc) · 3.2 KB
/
Client.java
File metadata and controls
93 lines (89 loc) · 3.2 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
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Scanner;
public class Client extends Socket {
private BufferedWriter bufferedWriter;
private BufferedReader bufferedReader;
private String username;
private ClientGUI clientGUI;
public Client(String host, int port) throws IOException {
this.clientGUI = new ClientGUI(host);
super(host,port);
boolean retry = false;
this.bufferedWriter = new BufferedWriter(new OutputStreamWriter(this.getOutputStream()));
this.bufferedReader = new BufferedReader(new InputStreamReader(this.getInputStream()));
Scanner scanner = new Scanner(System.in);
while(!this.isClosed()) {
if(!retry){
System.out.println("Enter Username: ");
}
else {
System.out.println("Username is Taken Please Enter Valid Username: ");
}
String username_attempt = scanner.nextLine();
this.bufferedWriter.write(username_attempt);
this.bufferedWriter.newLine();
this.bufferedWriter.flush();
String val = bufferedReader.readLine();
if (val.equals(username_attempt)){
this.username = username_attempt;
listenForMessage();
sendMessage();
break;
}
else {
retry=true;
}
}
}
public void listenForMessage() {
new Thread(() -> {
String messageFromGroupChat;
while (this.isConnected()) {
try {
messageFromGroupChat = bufferedReader.readLine();
if (messageFromGroupChat == null) {
System.out.println("Disconnected from server.");
break;
}
System.out.println(messageFromGroupChat);
} catch (IOException e) {
break;
}
}
}).start();
}
public void sendMessage() {
try {
Scanner scanner = new Scanner(System.in);
// Keep reading user input and send it to the server
while (this.isConnected()) {
String message = scanner.nextLine();
if (message.equals("!quit")){
bufferedWriter.write(message);
bufferedWriter.newLine();
bufferedWriter.flush();
this.bufferedWriter.close();
this.bufferedReader.close();
this.close();
System.exit(1);
}
bufferedWriter.write(username + ": " + message);
bufferedWriter.newLine();
bufferedWriter.flush();
}
scanner.close();
} catch (IOException e) {
//closeEverything(socket, bufferedReader, bufferedWriter);
e.printStackTrace();
}
}
public static void main(String[] args){
try {
Client client = new Client(args[0], Integer.parseInt(args[1]));
} catch (IOException e) {
e.printStackTrace();
}
}
}