// This example is from the book _Java Threads_ by Scott Oaks and Henry Wong.
// Written by Scott Oaks and Henry Wong.
// Copyright (c) 1997 O'Reilly & Associates.
// You may study, use, modify, and distribute this example for any purpose.
// This example is provided WITHOUT WARRANTY either expressed or implied.
// Sample TCPServer -- Chapter 8, p. 192. See also the TCPServer class
// from chapter 5.
import java.net.*;
import java.io.*;
public class TCPServer implements Cloneable, Runnable {
Thread runner = null;
ServerSocket server = null;
Socket data = null;
ThreadGroup group = null;
int groupNo = 0;
public synchronized void StartServer(int port) throws IOException {
if (runner == null) {
server = new ServerSocket(port);
runner = new Thread(this);
runner.start();
}
}
public synchronized void StopServer() {
if (server != null) runner.stop();
}
public void run() {
if (server != null) {
while (true) {
try {
Socket datasocket = server.accept();
TCPServer newSocket = (TCPServer) clone();
newSocket.server = null;
newSocket.data = datasocket;
newSocket.group =
new ThreadGroup("Client Group " + groupNo++);
newSocket.runner =
new Thread(newSocket.group, newSocket);
newSocket.runner.start();
} catch (Exception e) {}
}
} else {
run(data);
}
}
public void run(Socket data) {
}
}
|