package net;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class AutoServer implements Runnable {
public final static int PORT = 8000;
public static void main(String args[]) {
Thread serverThread = new Thread(new AutoServer());
serverThread.start();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
}
public void run() {
try {
ServerSocket ss =
new ServerSocket(PORT);
while (true) {
System.out.println("autoServerThread waiting");
Socket socket = ss.accept();
(new AutoServerThread(socket)).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
class AutoServerThread extends
Thread {
private ObjectInputStream ois;
private ObjectOutputStream oos;
AutoServerThread(Socket s)
throws IOException {
oos =
new ObjectOutputStream(
s.getOutputStream());
ois =
new ObjectInputStream(
s.getInputStream());
}
public void run() {
try {
Object o1 = ois.readObject();
Object o2 = ois.readObject();
if (o1 instanceof RemoteClassLoader)
((RemoteClassLoader) o1).reload();
if (!(o2 instanceof ComputableObject)) {
System.out.println("Bad object!");
return;
}
ComputableObject
co = (ComputableObject) o2;
Object ans = co.compute();
oos.writeObject(ans);
oos.close();
ois.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public java.io.ObjectInputStream getOis() {
return ois;
}
public void setOis(java.io.ObjectInputStream ois) {
this.ois = ois;
}
public java.io.ObjectOutputStream getOos() {
return oos;
}
public void setOos(java.io.ObjectOutputStream oos) {
this.oos = oos;
}
}