Re: client server - client problem
solomon13000@gmail.com wrote:
I did the changes as in to use a single connection:
GandhiServer2.java
------------------
import java.net.*;
import java.util.*;
import java.io.*;
public class GandhiServer2
{
ServerSocket ss;
Socket cs;
Vector ht;
ObjectInputStream ois;
Socket skt;
ObjectOutputStream oos;
public GandhiServer2()
{
I notice that you ignored my advice to move the work out of the constructor.
This is going to be a serious problem for you; your whole operation depends on
the stability of an incompletely-constructed object. Do not do that!
try
{
ss = new ServerSocket(9000);
cs = ss.accept();
You should move the accept() inside the loop, perhaps even with a for() loop:
for ( Socket cs; (cs = ss.accept()) != null; )
while(true)
{
ois = new ObjectInputStream(cs.getInputStream());
ht = (Vector)ois.readObject();
I notice that you ignored my question about why you used Vector instead of a
more modern List class.
if(!ht.isEmpty())
What if ht is null?
{
try
How about we use narrower indentation for Usenet posts?
{
oos = new
ObjectOutputStream(cs.getOutputStream());
oos.writeObject(ht);
This will write the received object right back to the sender.
oos.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
System.out.println(ht);
Why is this statement here?
ois.close();
ht.clear();
You're about to throw ht away; why are you clearing it?
cs.close();
cs = ss.accept();
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
new GandhiServer2();
}
}
Take that work out of the constructor.
If you ignore the advice you get here, why are you requesting it?
--
Lew