Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > General Computer Discussion > General Computer Support > HELP with client-server problem

Reply
Thread Tools

HELP with client-server problem

 
 
Jinx21 Jinx21 is offline
Junior Member
Join Date: Sep 2010
Posts: 1
 
      09-24-2010
I have an client/server application that I'm trying to write in Java and this application should be able to perform many functions and each time, the server should respond. I.e. The client has a GUI, while the server is a console application. The server should be able to list all the text documents that I specify (which will be read by FileInputStream), display it's contents and save the modified contents to that same file.

My problem is, I want to be able to break these three operations into methods on the client side and have the server respond. The moment the client closes the window, the connection must close. I have inserted my code below to explain what I'm trying to do:

import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class Client extends JFrame
{
//<variables> machine generated (do not edit)
JScrollPane jScrollPane2;
JList jList1;
JScrollPane jScrollPane1;
JList jList2;
JButton btnLoad;
JPanel jPanel1;
JLabel jLabel2;
JTextField jTextField1;
JButton btnSave;
JLabel jLabel1;
//</variables> machine generated (do not edit)

public ObjectOutputStream output;
public ObjectInputStream input;
String message = "";
String filenames = "";
public Socket client;

public DefaultListModel lm = new DefaultListModel();


public Client()
{
Container cp = getContentPane();
cp.setLayout(new BorderLayout());
createJPanel1();

runClient();

this.addWindowListener(
new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
try
{
System.out.println("Operation closing");
output.close();
input.close();
client.close();
System.exit(0);
}
catch (IOException classNotFoundException )
{
System.out.println( "Couldn't close" );
}
}
});
//add your own code here
cp.add(jPanel1);
pack();
}

public void runClient()
{
try
{
connectToServer();
getStreams();
getData();
ButtonEvent();
}
catch (IOException classNotFoundException )
{
System.out.println("Couldn't run the client");
}
}
public void connectToServer() throws IOException
{
System.out.println( "Attempting connection\n" );
client = new Socket(InetAddress.getLocalHost(), 5001 );
System.out.println( "Connected to: " + client.getInetAddress().getHostName() );
}
private void getStreams() throws IOException
{
output = new ObjectOutputStream(client.getOutputStream());
output.flush();
input = new ObjectInputStream(client.getInputStream() );
System.out.println( "Got I/O streams" );

}
private void getData() throws IOException
{
try
{
filenames = (String)input.readObject();
lm.addElement(filenames + "\n\r");
jList1.setModel(lm);
}
catch (IOException err)
{
System.out.println("Error: " + err.getMessage());
}
catch (ClassNotFoundException classNotFoundException)
{
System.out.println( "Something went wrong" + classNotFoundException.getMessage() );
}
}
public void ButtonEvent() throws IOException
{
try
{
btnLoad.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ev)
{
try
{
String command = btnLoad.getText().toString();
output.writeObject(command);
output.flush();
}
catch(IOException ee)
{
ee.printStackTrace();
}
}
});
}
catch (Exception error)
{
System.out.println("Error on button" + error.getMessage());
}
}
public static void main(String []args)
{
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAn dFeelClassName());
} catch (Exception e) {System.err.println("Could not set look and feel");}
Client startFrame = new Client();
startFrame.setVisible(true);
}
// <design0>
//this method is computer generated (do not edit)
public JPanel createJPanel1()
{
jPanel1 = new JPanel();
SpringLayout jPanel1Layout = new SpringLayout();
jPanel1.setLayout(jPanel1Layout);
SpringLayout.Constraints jPanel1Cons = jPanel1Layout.getConstraints(jPanel1);
jPanel1Cons.setConstraint("East",Spring.constant(3 10,310,1530));
jPanel1Cons.setConstraint("South",Spring.constant( 310,510,1530));
Spring jPanel1East = jPanel1Layout.getConstraint("East",jPanel1);
Spring jPanel1South = jPanel1Layout.getConstraint("South",jPanel1);
Spring jPanel1West = jPanel1Layout.getConstraint("West",jPanel1);
Spring jPanel1North = jPanel1Layout.getConstraint("North",jPanel1);
jPanel1.setName("jPanel1");
jLabel1 = new JLabel();
jLabel1.setFont(new Font("Tahoma",Font.BOLD,15));
jLabel1.setName("jLabel1");
jLabel1.setText("Filename:");
SpringLayout.Constraints jLabel1Cons = jPanel1Layout.getConstraints(jLabel1);
jLabel1Cons.setConstraint("East", Spring.constant(105));
jLabel1Cons.setConstraint("West", Spring.constant(15));
jLabel1Cons.setConstraint("South", Spring.constant(55));
jLabel1Cons.setConstraint("North", Spring.constant(25));
jPanel1.add(jLabel1);
jTextField1 = new JTextField();
jTextField1.setName("jTextField1");
SpringLayout.Constraints jTextField1Cons = jPanel1Layout.getConstraints(jTextField1);
jTextField1Cons.setConstraint("East", Spring.constant(295));
jTextField1Cons.setConstraint("West", Spring.constant(110));
jTextField1Cons.setConstraint("South", Spring.constant(55));
jTextField1Cons.setConstraint("North", Spring.constant(25));
jPanel1.add(jTextField1);
jScrollPane1 = new JScrollPane();
jScrollPane1.setName("jScrollPane1");
SpringLayout.Constraints jScrollPane1Cons = jPanel1Layout.getConstraints(jScrollPane1);
jScrollPane1Cons.setConstraint("East", Spring.constant(295));
jScrollPane1Cons.setConstraint("West", Spring.constant(10));
jScrollPane1Cons.setConstraint("South", Spring.constant(245));
jScrollPane1Cons.setConstraint("North", Spring.constant(70));
jPanel1.add(jScrollPane1);
jList1 = new JList();
jList1.setName("jList1");
jScrollPane1.setViewportView(jList1);
btnLoad = new JButton();
btnLoad.setName("btnLoad");
btnLoad.setText("Load");
SpringLayout.Constraints btnLoadCons = jPanel1Layout.getConstraints(btnLoad);
btnLoadCons.setConstraint("East", Spring.constant(125));
btnLoadCons.setConstraint("West", Spring.constant(35));
btnLoadCons.setConstraint("South", Spring.constant(285));
btnLoadCons.setConstraint("North", Spring.constant(255));
jPanel1.add(btnLoad);
btnSave = new JButton();
btnSave.setName("btnSave");
btnSave.setText("Save");
SpringLayout.Constraints btnSaveCons = jPanel1Layout.getConstraints(btnSave);
btnSaveCons.setConstraint("East", Spring.constant(240));
btnSaveCons.setConstraint("West", Spring.constant(150));
btnSaveCons.setConstraint("South", Spring.constant(285));
btnSaveCons.setConstraint("North", Spring.constant(255));
jPanel1.add(btnSave);
jScrollPane2 = new JScrollPane();
jScrollPane2.setName("jScrollPane2");
SpringLayout.Constraints jScrollPane2Cons = jPanel1Layout.getConstraints(jScrollPane2);
jScrollPane2Cons.setConstraint("East", Spring.constant(300));
jScrollPane2Cons.setConstraint("West", Spring.constant(10));
jScrollPane2Cons.setConstraint("South", Spring.constant(495));
jScrollPane2Cons.setConstraint("North", Spring.constant(345));
jPanel1.add(jScrollPane2);
jList2 = new JList();
jList2.setName("jList2");
jScrollPane2.setViewportView(jList2);
jLabel2 = new JLabel();
jLabel2.setName("jLabel2");
jLabel2.setText("File Contents:");
SpringLayout.Constraints jLabel2Cons = jPanel1Layout.getConstraints(jLabel2);
jLabel2Cons.setConstraint("East", Spring.constant(190));
jLabel2Cons.setConstraint("West", Spring.constant(100));
jLabel2Cons.setConstraint("South", Spring.constant(330));
jLabel2Cons.setConstraint("North", Spring.constant(300));
jPanel1.add(jLabel2);
return jPanel1;
}
// </design0>
}

Server:

import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Server extends JFrame
{
private JTextField enterField;
private JTextArea displayArea;
private ObjectOutputStream output;
private ObjectInputStream input;
private ServerSocket server;
private Socket connection;

String example = "example.txt";
String myStuff = "MyStuff.txt";

String command = " ";
public Server()
{
runServer();
}


public void runServer()
{
try {

// Step 1: Create a ServerSocket.
server = new ServerSocket( 5001, 100 );

waitForConnection();

getStreams();


writeData(example, myStuff);
readData();

closeConnection();
}
catch ( EOFException eofException )
{
System.out.println( "Client terminated connection" );
}
catch ( IOException ioException )
{
ioException.printStackTrace();
}
}

// wait for connection to arrive, then display connection info
private void waitForConnection() throws IOException
{
System.out.println("Waiting for connection\n" );

connection = server.accept();

System.out.println( "Connection received from: " + connection.getInetAddress().getHostName() );
}

// get streams to send and receive data
private void getStreams() throws IOException
{

output = new ObjectOutputStream( connection.getOutputStream() );

output.flush();

input = new ObjectInputStream( connection.getInputStream() );

System.out.println( "\nGot I/O streams\n" );
}
private void readData()
{
try
{
String com = (String)input.readObject().toString();
if (com.equals("Load"))
{
System.out.println("The server registered your button push");
}
}
catch (IOException classNotFoundException )
{
System.out.println( "Unknown object type received" );
}
catch (ClassNotFoundException classNotFoundException )
{
System.out.println( "Something went wrong on client side 2000" );
}
}
public void writeData(String s, String e) throws IOException
{

try
{
output.writeObject(s);
output.writeObject(e);
output.flush();

}
catch (IOException classNotFoundException )
{
System.out.println( "Unknown object type received" );
}

}
// close streams and socket
private void closeConnection() throws IOException
{
System.out.println( "\nUser terminated connection" );
output.close();
input.close();
connection.close();
}
public static void main( String args[] )
{
Server application = new Server();
}
}

Is there anyway to be able to do multiple methods and the server respond to each one and only close the connection once I've closed the client window. Been at this for 8 hours straight and I feel like I'm running in circles.

PLEASE HELP ME!!!!
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Help Help Help Pentax S5i Help needed (Please) The Martian Digital Photography 14 06-20-2008 07:56 AM
HELP WANTED HELP WANTED HELP WANTED Harvey ASP .Net 1 07-16-2004 01:12 PM
HELP WANTED HELP WANTED HELP WANTED Harvey ASP .Net 0 07-16-2004 10:00 AM
Problem problem problem :( Need Help Mike ASP General 2 05-11-2004 08:36 AM
HELP! HELP! HELP! Opening Web Application Project Error =?Utf-8?B?dHJlbGxvdzQyMg==?= ASP .Net 0 02-20-2004 05:16 PM



Advertisments