package net.sourceforge.jsocks.test;
import java.io.*;
import java.net.*;
/**
Server to used perform tests for SOCKS library.
*/
public class TestServer implements Runnable{
static PrintStream log = null;
int service;
/**
Creates a TestServer object which will listen on the port associated
with given service.
@param service Service to provide
*/
public TestServer(int service){
this.service = service;
}
public void run(){
try{
server(service);
}catch(IOException ioe){
log("Exception:"+ioe);
ioe.printStackTrace();
}
}
//Static functions
/////////////////
/**
Listens on the port associated with given service.
<p>
When connection is accepted, speciefied service is performed.
It is being done in separate thread.
@return Never returns.
*/
static public void server(int service) throws IOException{
ServerSocket ss = new ServerSocket(TestService.servicePorts[service]);
Socket s;
s = ss.accept();
while(s!=null){
TestService st = new TestService(s,service);
Thread t = new Thread(st);
t.start();
s = ss.accept();
}
}
/**
Performs logging.
*/
static synchronized void log(String s){
if(log != null) log.println(s);
}
//Main Function
///////////////
public static void main(String[] args){
log = System.out;
TestService.log = log;
TestServer st;
for( int i = 0; i< TestService.serviceNames.length;++i){
log("Starting service "+TestService.serviceNames[i]+" at port "+
TestService.servicePorts[i]+".");
st = new TestServer(i);
Thread t = new Thread(st);
t.start();
}
}
}