- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathServer.java
More file actions
Latest commit
144 lines (123 loc) · 4.04 KB
/
Copy pathServer.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
importjava.io.*;
importjava.net.*;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
classServerextendsJFrame {// server is a standalone computer which anyone can access
publicJTextAreachatWindow;
publicJTextFielduserText;
privateObjectOutputStreamoutput;// outputstream is the data that flows from your computer to your friends
// computer
privateObjectInputStreaminput;
privateServerSocketserver;
privateSocketconnection;// in java they actually name connection socket
// setup the socket means setting up the connection
publicServer() {
super("Jinit's Messaging App ");
userText = newJTextField();
userText.setEditable(false);// before u r connected to anyone u r not allowed to talk to anyone
userText.addActionListener(newActionListener() {
@Override
publicvoidactionPerformed(ActionEventevent) {
sendMessage(event.getActionCommand());// returns command string associated with it i.e textfield
userText.setText("");
}
});
add(userText, BorderLayout.NORTH);
chatWindow = newJTextArea();
add(newJScrollPane(chatWindow));
setSize(300, 150);
setVisible(true);
}
// setting up the server
publicvoidstartRunning() {
try {
server = newServerSocket(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 (EOFExceptioneofException) {// end of stream
showMessage("\n Server ended the connection ");
} finally {
closeCrap();
}
}
} catch (IOExceptionioException) {
ioException.printStackTrace();
}
}
publicvoidwaitForConnection() throwsIOException {
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());
}
publicvoidsetupStreams() throwsIOException {
output = newObjectOutputStream(connection.getOutputStream());// creating a conncection to whatever computer we
// want to connect to
output.flush();// smtimes data gets stop this sends it
input = newObjectInputStream(connection.getInputStream());
showMessage("\n Streams are setup \n");
}
//during the conversation
publicvoidwhileChatting() throwsIOException {
Stringmessage = "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 (ClassNotFoundExceptionclassNotFoundException) {
showMessage("\n idk what it sends ");
}
} while (!message.equals("CLIENT - END"));
}
// closing the streamss and sockets
publicvoidcloseCrap() {
showMessage("\n Closing connections....\n ");
ableToType(false);
try {
output.close();
input.close();
connection.close();
} catch (IOExceptionioexception) {
ioexception.printStackTrace();
}
}
// send a message to client
publicvoidsendMessage(Stringmessage) {
try {
output.writeObject("SERVER- " + message);// sends message to output stream
output.flush();
showMessage("\nSERVER -" + message);
} catch (IOExceptionioException) {
chatWindow.append("\n ERROR ,I cant send it ");
}
}
// update chat window
publicvoidshowMessage(finalStringtext) {
SwingUtilities.invokeLater(newRunnable() {
@Override
publicvoidrun() {
chatWindow.append(text);
}
});
}
publicvoidableToType(finalbooleantof) {
// let the user type
SwingUtilities.invokeLater(newRunnable() {
@Override
publicvoidrun() {
userText.setEditable(tof);
}
});
}
}