-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathServer.java
More file actions
121 lines (113 loc) · 4.14 KB
/
Server.java
File metadata and controls
121 lines (113 loc) · 4.14 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
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Server extends JFrame{
private JTextField userText;
private JTextArea chatWindow;
private ServerSocket server;
private Socket connection;
private static final int maxClients = 10;
private static final serverThread[] threads = new serverThread[maxClients];
public Server(){
super("Main Server");
userText = new JTextField();
userText.setEditable(false);
add(userText,BorderLayout.SOUTH);
chatWindow = new JTextArea();
add( new JScrollPane(chatWindow) );
setSize(300,150);
setVisible(true);
}
public void startRunning(){
try{
server = new ServerSocket(6789);
while(true){
try{
connection = server.accept();
int i=0;
for(i=0;i<maxClients;i++){
if(threads[i]==null){
( threads[i] = new serverThread(connection,threads,maxClients,chatWindow) ).start();
break;
}
}
if(i==maxClients){
connection.close();
}
}catch(IOException ioException){
ioException.printStackTrace();
}
}
}catch(IOException ioException){
ioException.printStackTrace();
}
}
}
class serverThread extends Thread{
private ObjectOutputStream output;
private ObjectInputStream input;
private Socket connection;
private final serverThread[] threads;
private String message;
private String myMessage;
private int maxClients;
private JTextArea chatWindow;
public serverThread(Socket connection,serverThread[] threads,int maxClients,JTextArea chatWindow){
this.connection = connection;
this.threads = threads;
this.maxClients = maxClients;
this.chatWindow = chatWindow;
}
public void run(){
serverThread[] threads = this.threads;
try{
output = new ObjectOutputStream(connection.getOutputStream());
output.flush();
input = new ObjectInputStream(connection.getInputStream());
while(true){
try{
message = (String) input.readObject();
myMessage = message.substring(8,message.length());
}catch(ClassNotFoundException classNotFoundException){
classNotFoundException.printStackTrace();
}
if(myMessage.length()>=15 && myMessage.substring(0,12).equals("Sending file")){
MyObject myObject=null;
try{
myObject = (MyObject) input.readObject();
}catch(ClassNotFoundException classNotFoundException){
classNotFoundException.printStackTrace();
}
for(int i=0;i<maxClients;i++){
if(threads[i]!=null && threads[i]!=this){
threads[i].output.writeObject(message);
}
}
for(int i=0;i<maxClients;i++){
if(threads[i]!=null && threads[i]!=this){
threads[i].output.writeObject(myObject);
}
}
}else{
for(int i=0;i<maxClients;i++){
if(threads[i]!=null){
threads[i].output.writeObject(message);
}
}
}
if(message.substring(8).equals("END")){
break;
}
}
for(int i=0;i<maxClients;i++){
if(threads[i]==this){
threads[i]=null;
}
}
}catch(IOException ioException){
ioException.printStackTrace();
}
}
}