E
espresso
I'm having some difficulty with ObjectInputStream and
ObjectOutputStream in a client server application using sockets. Here
is the relevant code:
client...
System.out.println("Connecting to server...");
clientSock = new ObjectSocket("localhost", PORT);
System.out.print("Message to server? ");
clientSock.writeObject(hr); // send to server
System.out.print("Reply from server: ");
hr= (HRProtocol)clientSock.readObject(); // read response
from server
dept= (Department)hr.getArg();
ObjectSocket constructors:
public ObjectSocket(String host, short port)throws
UnknownHostException, IOException {
this(new Socket(host,port));
}
public ObjectSocket(Socket s)
throws UnknownHostException, IOException{
theSocket = s;
oss = new ObjectOutputStream(theSocket.getOutputStream());
oss.flush();
ois = new ObjectInputStream(theSocket.getInputStream());
}
Server code :
ServerSocket serverSock = new ServerSocket(PORT);
while(true){
System.out.println("Waiting for client connection...");
ObjectSocket clientSock = new ObjectSocket(serverSock.accept());
// wait for client request
System.out.println("Connected to client...creating processing
thread");
Thread newServerThread = new Thread(new
DBServerThread(clientSock)); // create new request processing thread
newServerThread.start()
ServerThread code:
ObjectSocket clientSock = null;
public DBServerThread(ObjectSocket o) {
clientSock = o;
}
public void run() {
HRProtocol hrp=null;
HRDatabase hrdb=null;
Department dept=null;
Employee emp=null;
int deptno = 0;
String empid="";
Boolean result=null;
try {
hrp = (HRProtocol) clientSock.readObject(); // read Object
from client
int code = hrp.getCode();
switch(code){
//department find request
case HRPROTOCOL_FIND_DEPARTMENT_REQUEST:
deptno = Integer.parseInt(hrp.getArg().toString());
//get dept using HRDatabase object
dept = hrdb.findDepartment(deptno);
//reset HRPROTOCOL object
hrp.setCode(HRPROTOCOL_FIND_DEPARTMENT_RESPONSE);
hrp.setArg(dept);
clientSock.writeObject(hrp);
break;
Everything works fine until I get to this part of the client code
where the progam hangs:
hr= (HRProtocol)clientSock.readObject();
Any ideas about what the problem is here?
Thanks
ObjectOutputStream in a client server application using sockets. Here
is the relevant code:
client...
System.out.println("Connecting to server...");
clientSock = new ObjectSocket("localhost", PORT);
System.out.print("Message to server? ");
clientSock.writeObject(hr); // send to server
System.out.print("Reply from server: ");
hr= (HRProtocol)clientSock.readObject(); // read response
from server
dept= (Department)hr.getArg();
ObjectSocket constructors:
public ObjectSocket(String host, short port)throws
UnknownHostException, IOException {
this(new Socket(host,port));
}
public ObjectSocket(Socket s)
throws UnknownHostException, IOException{
theSocket = s;
oss = new ObjectOutputStream(theSocket.getOutputStream());
oss.flush();
ois = new ObjectInputStream(theSocket.getInputStream());
}
Server code :
ServerSocket serverSock = new ServerSocket(PORT);
while(true){
System.out.println("Waiting for client connection...");
ObjectSocket clientSock = new ObjectSocket(serverSock.accept());
// wait for client request
System.out.println("Connected to client...creating processing
thread");
Thread newServerThread = new Thread(new
DBServerThread(clientSock)); // create new request processing thread
newServerThread.start()
ServerThread code:
ObjectSocket clientSock = null;
public DBServerThread(ObjectSocket o) {
clientSock = o;
}
public void run() {
HRProtocol hrp=null;
HRDatabase hrdb=null;
Department dept=null;
Employee emp=null;
int deptno = 0;
String empid="";
Boolean result=null;
try {
hrp = (HRProtocol) clientSock.readObject(); // read Object
from client
int code = hrp.getCode();
switch(code){
//department find request
case HRPROTOCOL_FIND_DEPARTMENT_REQUEST:
deptno = Integer.parseInt(hrp.getArg().toString());
//get dept using HRDatabase object
dept = hrdb.findDepartment(deptno);
//reset HRPROTOCOL object
hrp.setCode(HRPROTOCOL_FIND_DEPARTMENT_RESPONSE);
hrp.setArg(dept);
clientSock.writeObject(hrp);
break;
Everything works fine until I get to this part of the client code
where the progam hangs:
hr= (HRProtocol)clientSock.readObject();
Any ideas about what the problem is here?
Thanks