From 4722100cba287b164957c658c2e035783e20c963 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Wed, 18 Feb 2009 17:33:22 +0000 Subject: moved sources --- sources/client/ServerRequester.java | 82 +++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 sources/client/ServerRequester.java (limited to 'sources/client/ServerRequester.java') diff --git a/sources/client/ServerRequester.java b/sources/client/ServerRequester.java new file mode 100644 index 0000000..9cd7485 --- /dev/null +++ b/sources/client/ServerRequester.java @@ -0,0 +1,82 @@ +/** + * + */ +package client; + + +import java.io.*; +import java.net.*; +import java.security.*; +import javax.net.*; +import javax.net.ssl.*; + +import shared.*; +import shared.remotecall.*; + +/** + * This class only has static members. Its used for creating a client socket to connect and + * communicate with the calendar server. + * @author buetow + */ +public class ServerRequester { + /** + * This method creates a new client socket. + * @return Returns a client socket object. + * @throws IOException + */ + private static Socket makeClientSocket() throws IOException { + if (!Config.getBooleanValue("use_ssl")) { + Main.statusMessage("Making non-SSL Socket..."); + return new Socket(Config.getServerAddress(), Config.getIntValue("server_port")); + } + + Main.statusMessage("Making SSL Socket..."); + //Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); + SocketFactory socketFactory = SSLSocketFactory.getDefault(); + return socketFactory.createSocket(Config.getServerAddress(), Config.getIntValue("server_port")); + } + + /** + * Sends a client request to the netcalendar server end receives a server response object. + * @param clientRequest Specifies the client request to send to the calendar server. + * @return Returns the server response. It returns null if no response is available. + */ + public final static ServerResponse sendClientRequest(ClientRequest clientRequest) { + Main.statusMessage("Sending client request to server..."); + + ServerResponse serverResponse = null; + + try { + Socket socket = makeClientSocket(); + socket.setKeepAlive(true); + + // Send the client request to the server + OutputStream outputStream = socket.getOutputStream(); + ObjectOutput objectOutput = new ObjectOutputStream(outputStream); + + objectOutput.writeObject(clientRequest); + objectOutput.flush(); + + // We only want to receive data if the request new events, not if we only send + // changed events! + if (clientRequest.requestsNewEvents()) { + // Recieve the server's response + InputStream inputStream = socket.getInputStream(); + ObjectInput objectInput = new ObjectInputStream(inputStream); + serverResponse = (ServerResponse) objectInput.readObject(); + } + + objectOutput.close(); + socket.close(); + + } catch (Exception e) { + Main.infoMessage("Client error during serialization: " + e.getMessage()); + Main.statusMessage("Error: Client request did not succeed! Server down?"); + return serverResponse; + } + + Main.statusMessage("Last client request succeeded"); + // Returns null if no response is available! + return serverResponse; + } +} -- cgit v1.2.3