Here is the Java code advertised on KGS Issue - Client Memory Consumption.
import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.IOException; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; import javax.swing.JFrame; import javax.swing.JTextArea;
public class SingleClient {
static JFrame jframe; static JTextArea jtextarea; static int portNumber = 29753; static ServerSocket serverSocket;
static Thread mySimpleServer;
static void startServer() { try { serverSocket = new ServerSocket(portNumber); mySimpleServer = new Thread() { public void run() { Socket clientSocket = null; for(;;) { try { // here the thread waits for the client clientSocket = serverSocket.accept(); clientSocket.setSoLinger(false, 0); System.out.println("serverSocket gets input"); DataInputStream in = new DataInputStream(clientSocket.getInputStream()); BufferedReader b = new BufferedReader(new InputStreamReader(in)); String message = b.readLine(); System.out.println("got input message from client: "+message); if (jtextarea!=null) { jtextarea.setText(jtextarea.getText()+"\n"+message); jtextarea.setCaretPosition(jtextarea.getText().length()); } } catch(Exception e) { try { serverSocket.close(); } catch(Exception e2) {} System.out.println(e); System.exit(1); } finally { try { clientSocket.close(); } catch(Exception e) {} } } } }; mySimpleServer.start(); } catch(Exception e) { System.out.println(e); System.exit(1); }
}
static void startUI() { jframe = new JFrame(); jframe.addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { // new File(portFile).delete(); System.exit(0); } }); jtextarea = new JTextArea(5,10); jframe.getContentPane().add(new javax.swing.JScrollPane(jtextarea)); jframe.pack(); jframe.setVisible(true); }
static void sendMessageToServer(Socket socket, String message) { try { DataOutputStream out = new DataOutputStream(socket.getOutputStream()); out.writeBytes(message); out.flush(); out.close(); socket.close(); System.out.println("try to write message <"+message+"> to server " + socket); } catch(Exception e) { System.out.println(e); System.exit(1); } }
public static void main(String[] args) throws IOException { Socket serverConnectionSocket; try { serverConnectionSocket = new Socket(InetAddress.getByName("127.0.0.1"), portNumber); } catch(IOException e) { // could not connect to socket startUI(); startServer(); serverConnectionSocket = new Socket(InetAddress.getByName("127.0.0.1"), portNumber); } sendMessageToServer(serverConnectionSocket, args[0]); // end only this thread: System.exit(0); } }