1 //header of class---------------------------------------------------------------
2 import java.*;
3 import java.net.*;
4 import java.util.*;
5
6 abstract public class TCPService extends Service{
7 private boolean stopservice;
8 protected Socket so;
9
10 abstract protected void serve();
11 public final static int BUILD=141;
12 //run.zdys----------------------------------------------------------------------
13 public void run(){
14 if(so== null){
15 init();
16 try{
17 int port= Integer.parseInt(arg[1]);
18 ServerSocket ss;
19 if(arg[2].equals("-")){
20 ss= new ServerSocket(port);
21 }else{
22 ss= new ServerSocket(port, 1000, InetAddress.getByName(arg[2]));
23 }
24 Utils.pr(this, "starting TCPService "+ arg[0]+ " on "
25 + ss.getInetAddress().getHostAddress()+ ":"+ ss.getLocalPort());
26 ss.setSoTimeout(TIMEOUT);
27 while(true){
28 Socket st;
29 try{
30 st= ss.accept();
31 }catch(java.io.InterruptedIOException ex2){
32 if(stopservice){
33 ss.close();
34 Utils.pr(this, "TCPService "+ arg[0]+ " on "
35 + ss.getInetAddress().getHostAddress()+ ":"+ ss.getLocalPort()+ " stopped");
36 return;
37 }else{
38 continue;
39 }
40 }
41 TCPService r= (TCPService)this.getClass().newInstance();
42 r.so= st;
43 r.arg= arg;
44 r.start();
45 }
46 }catch(Exception ex){
47 Utils.pr(this, "ERROR in TCPService.run:"+ ex);
48 }
49 }else{
50 serve();
51 }
52 }
53 //stopService.zdys--------------------------------------------------------------
54 public void stopService(){
55 stopservice= true;
56 }
57 //init.zdys---------------------------------------------------------------------
58 public void init(){
59 }
60 //end of class------------------------------------------------------------------
61 }