-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathClient.java
More file actions
123 lines (106 loc) · 2.88 KB
/
Client.java
File metadata and controls
123 lines (106 loc) · 2.88 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
119
120
121
122
123
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Client extends JFrame {
public JTextArea chatWindow;
public JTextField userText;
private ObjectOutputStream output;
private ObjectInputStream input;
private String message = "";
private String serverIP;
private Socket connection;
public Client(String host) {
// in host we r sending the ip address of the server which we want to cinnect to
super("Client FOMO..");
serverIP = host;
userText = new JTextField();
userText.setEditable(false);
userText.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
sendMessage(e.getActionCommand());
userText.setText("");
}
});
add(userText, BorderLayout.NORTH);
chatWindow = new JTextArea();
add(new JScrollPane(chatWindow), BorderLayout.CENTER);
setSize(300, 150);
setVisible(true);
}
// connect to server
public void startRunning() {
try {
connectToServer();
setupStreams();
whileChatting();
} catch (EOFException eofException) {
showMessage("\n Client terminated connection ");
} catch (IOException ioexception) {
ioexception.printStackTrace();
} finally {
closeCrap();
}
}
public void connectToServer() throws IOException {
showMessage("Attempting conncection...\n");
connection = new Socket(InetAddress.getByName(serverIP), 6789);
showMessage("Connected to " + connection.getInetAddress().getHostName());
}
public void showMessage(String m) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
chatWindow.append(m);
}
});
}
// setup to send and receive messages
public void setupStreams() throws IOException {
output = new ObjectOutputStream(connection.getOutputStream());
output.flush();
input = new ObjectInputStream(connection.getInputStream());
showMessage("\n your streams are good to go...\n");
}
public void whileChatting() throws IOException {
ableToType(true);
do {
try {
message = (String) input.readObject();
showMessage("\n " + message);
} catch (ClassNotFoundException classNotFoundException) {
showMessage("I don't know the type of object ");
}
} while (!message.equals("SERVER - END"));
}
public void closeCrap() {
ableToType(false);
showMessage("Closing everything");
try {
output.close();
input.close();
connection.close();
} catch (IOException ioException) {
ioException.printStackTrace();
}
}
public void sendMessage(String message) {
try {
output.writeObject("CLIENT - " + message);
output.flush();
showMessage("\nCLIENT - " + message);
} catch (IOException ioException) {
chatWindow.append("\n smthing went wrong ");
}
}
public void ableToType(final boolean tof) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
userText.setEditable(tof);
}
});
}
}