-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathClient-Server
More file actions
142 lines (115 loc) · 3.21 KB
/
Client-Server
File metadata and controls
142 lines (115 loc) · 3.21 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
124
125
126
127
128
129
130
131
132
133
134
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Client extends JFrame{
private JTextField userText;
private JTextArea chatWindow;
private ObjectOutputStream output; //opposite from the host computer
private ObjectInputStream input;
private String message = "";
private String serverIP; //IP address of person you're talking to
private Socket connection;
//constructor
public Client(String host){
super("Client IM");
serverIP = host;
userText = new JTextField();
userText.setEditable(false);
userText.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent event){
sendMessage(event.getActionCommand());
userText.setText("");
}
}
);
add(userText, BorderLayout.NORTH);
chatWindow = new JTextArea();
add(new JScrollPane(chatWindow), BorderLayout.CENTER);
setSize(500, 250);
setVisible(true);
}
//connect to server
public void startRunning(){
try{
connectToServer();
setUpStreams();
whileChatting();
}catch(EOFException eofException){
showMessage("\n Oops! Client terminated the connection");
}catch(IOException ioException){
ioException.printStackTrace();
}finally{
closeUneeded();
}
}
//connect to server
private void connectToServer()throws IOException{
showMessage("Trying to connect...\n");
connection = new Socket(InetAddress.getByName(serverIP), 6789);
showMessage("Connected to: " + connection.getInetAddress().getHostName());
}
//set up streams to send/receive messages
private void setUpStreams() throws IOException{
output = new ObjectOutputStream(connection.getOutputStream());
output.flush();
input = new ObjectInputStream(connection.getInputStream());
showMessage("\n Streams are now conencted \n");
}
//while chatting with server
private void whileChatting() throws IOException{
ableToType(true);
do{
try{
message = (String) input.readObject(); //will read whatever is sent and store it in message
showMessage("\n" + message);
}catch(ClassNotFoundException classnotFoundException){
showMessage("\n Invalid object type");
}
}while(!message.equals("SERVER-END"));
}
//close down streams and sockets
private void closeUneeded(){
showMessage("\n Closing everything down");
ableToType(false);
try{
output.close();
input.close();
connection.close();
}catch(IOException ioException){
ioException.printStackTrace();
}
}
//send messages to server from the client
private void sendMessage(String message){
try{
output.writeObject("CLIENT - " + message);
output.flush();
showMessage("\n CLIENT - " + message);
}catch(IOException ioException){
chatWindow.append("\n Something is wrong while sending the messgae");
}
}
//change/update chatWindow
private void showMessage(final String message){
SwingUtilities.invokeLater(
new Runnable(){
public void run(){
chatWindow.append(message);
}
}
);
}
//allows user to type in the text box
private void ableToType(final boolean trueOrFalse){
SwingUtilities.invokeLater(
new Runnable(){
public void run(){
userText.setEditable(trueOrFalse);
}
}
);
}
}