-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathServer.java
More file actions
144 lines (123 loc) · 4.04 KB
/
Server.java
File metadata and controls
144 lines (123 loc) · 4.04 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
135
136
137
138
139
140
141
142
143
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Server extends JFrame {// server is a standalone computer which anyone can access
public JTextArea chatWindow;
public JTextField userText;
private ObjectOutputStream output;// outputstream is the data that flows from your computer to your friends
// computer
private ObjectInputStream input;
private ServerSocket server;
private Socket connection;// in java they actually name connection socket
// setup the socket means setting up the connection
public Server() {
super("Jinit's Messaging App ");
userText = new JTextField();
userText.setEditable(false);// before u r connected to anyone u r not allowed to talk to anyone
userText.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
sendMessage(event.getActionCommand());// returns command string associated with it i.e textfield
userText.setText("");
}
});
add(userText, BorderLayout.NORTH);
chatWindow = new JTextArea();
add(new JScrollPane(chatWindow));
setSize(300, 150);
setVisible(true);
}
// setting up the server
public void startRunning() {
try {
server = new ServerSocket(6789, 100);// server is a computer which can be accessed by a lot of people on
// which there r many applications and u connect to a single appn by
// port number 2nd parameter is the num of people who can access it
while (true) {
try {
// connect and have conversation with some1 else
waitForConnection();
setupStreams();
whileChatting();
} catch (EOFException eofException) {// end of stream
showMessage("\n Server ended the connection ");
} finally {
closeCrap();
}
}
} catch (IOException ioException) {
ioException.printStackTrace();
}
}
public void waitForConnection() throws IOException {
showMessage("Waiting for sm1 to connect.... ");
connection = server.accept();// connection is the socket and server.accept() accepts sm1 request to connect
// to u and sends it to socket
showMessage("now connected to " + connection.getInetAddress().getHostName());
}
public void setupStreams() throws IOException {
output = new ObjectOutputStream(connection.getOutputStream());// creating a conncection to whatever computer we
// want to connect to
output.flush();// smtimes data gets stop this sends it
input = new ObjectInputStream(connection.getInputStream());
showMessage("\n Streams are setup \n");
}
//during the conversation
public void whileChatting() throws IOException {
String message = "Wou are now connected ";
sendMessage(message);
ableToType(true);
do {
// have conversation
try {
message = (String) input.readObject();// input is socket from which they will send ...it views it as
// object and store it in string
showMessage("\n " + message);
} catch (ClassNotFoundException classNotFoundException) {
showMessage("\n idk what it sends ");
}
} while (!message.equals("CLIENT - END"));
}
// closing the streamss and sockets
public void closeCrap() {
showMessage("\n Closing connections....\n ");
ableToType(false);
try {
output.close();
input.close();
connection.close();
} catch (IOException ioexception) {
ioexception.printStackTrace();
}
}
// send a message to client
public void sendMessage(String message) {
try {
output.writeObject("SERVER- " + message);// sends message to output stream
output.flush();
showMessage("\nSERVER -" + message);
} catch (IOException ioException) {
chatWindow.append("\n ERROR ,I cant send it ");
}
}
// update chat window
public void showMessage(final String text) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
chatWindow.append(text);
}
});
}
public void ableToType(final boolean tof) {
// let the user type
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
userText.setEditable(tof);
}
});
}
}