Question: / / Program sets up a Server that receives connections from clients, sends / / strings to the clients and receives string from the clients.
Program sets up a Server that receives connections from clients, sends
strings to the clients and receives string from the clients.
import java.ioIOException;
import java.ioObjectInputStream;
import java.ioObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.concurrent.Executors;
import java.util.concurrent.ExecutorService;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
public class Server extends JFrame
private JTextField enterField; text field to enter messages
private JTextArea display; text area to display messages
private JScrollPane scroller; scrollpane to scroll text area
private ArrayList ClientRunnable clients; ArrayList of clients
private ExecutorService clientExecutor; to run clients
private ServerSocket server; server socket to accept connections
set up GUI
public Server
superServer;
enterField new JTextField; create enterField
enterField.setEnabledfalse; disable editability
enterField.addActionListener
new ActionListener
send message to each client
public void actionPerformedActionEvent event
for ClientRunnable eachClient : clients
eachClient.sendDataeventgetActionCommand;
enterField.setText; clear enterField
end actionPerformed
end anonymous inner class
; end call to addActionListener
display new JTextArea; create JTextArea
display.setEditablefalse; disable editing
scroller new JScrollPanedisplay; add display to scrollpane
addenterField BorderLayout.NORTH; add enterField
addscroller BorderLayout.CENTER; add scrollpane
setSize; set window size
setVisibletrue; show window
clientExecutor Executors.newCachedThreadPool; for clients
clients new ArrayList ClientRunnable ; initialize clients
end constructor Server
set up and run server
public void runServer
try set up server and process connections
server new ServerSocket; create server socket
ClientRunnable newClient; to hold new clients
accept connections and add clients to ArrayList
while true
displayMessageWaiting for connection
;
newClient new ClientRunnableserveraccept
display, clients.size; create a new client
clients.addnewClient; add client to ArrayList
clientExecutor.executenewClient; run client
enterField.setEnabledtrue; enable enterField
end while
end try
catch IOException ioException
ioException.printStackTrace;
end catch
end method runServer
public void displayMessagefinal String message
SwingUtilities.invokeLater
new Runnable
public void run
display.appendmessage;
end method run
end anonymous inner class
; end call to SwingUtilities.invokeLater
end method displayMessage
private inner class ClientRunnable manages each Client
private class ClientRunnable implements Runnable
private int clientNumber; number of client in server
private Socket connection; connection to client
private ObjectOutputStream output; output stream to client
private ObjectInputStream input; input stream from client
private JTextArea display; displays messages
set up a client runnable
public ClientRunnableSocket socket, JTextArea displayArea,
int number
display displayArea; store the display
clientNumber number; store this client's number
connection socket; store connection to client
try obtain streams from Socket
output new ObjectOutputStream
connection.getOutputStream; get output stream
output.flush; flush any data
get input stream
input new ObjectInputStreamconnectiongetInputStream;
sendDataConnection successful"; notify of connection
displayMessage
Connection clientNumber
received from:
connection.getInetAddressgetHostName
build a program that uses a client and server to implement a chat program. The requirements are as follows:
You MUST use approp
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
