1 //header of class---------------------------------------------------------------
2 import java.*;
3 import java.net.*;
4
5 abstract public class UDPService extends Service{
6 private boolean stopservice;
7
8 protected InetAddress dpi;
9 protected DatagramPacket dp;
10
11 abstract protected DatagramPacket react();
12 public final static int BUILD=31;
13 //run.zdys----------------------------------------------------------------------
14 public void run(){
15 try{
16 init();
17 int port= Integer.parseInt(arg[1]);
18 DatagramSocket ds;
19 if(arg[2].equals("-")){
20 ds= new DatagramSocket(port);
21 }else{
22 ds= new DatagramSocket(port, InetAddress.getByName(arg[2]));
23 }
24 Utils.pr(this, "starting UDPService "+ arg[0]+ " on "
25 + ds.getLocalAddress().getHostAddress()+ ":"+ ds.getLocalPort());
26 ds.setSoTimeout(TIMEOUT);
27 int buffersize= Integer.parseInt(arg[3]);
28 dp= new DatagramPacket(new byte[buffersize], 0, 0);
29 while(true){
30 if(dp.getData().length!= buffersize){
31 dp.setData(new byte[buffersize]);
32 }
33 dp.setLength(buffersize);
34 try{
35 ds.receive(dp);
36 }catch(java.io.InterruptedIOException ex2){
37 if(stopservice){
38 ds.close();
39 Utils.pr(this, "UDPService "+ arg[0]+ " on "
40 + ds.getLocalAddress().getHostAddress()+ ":"+ ds.getLocalPort()+ " stopped");
41 return;
42 }else{
43 continue;
44 }
45 }
46 dpi= ds.getLocalAddress();
47 DatagramPacket reply= react();
48 if(reply!= null){
49 ds.send(reply);
50 }
51 }
52 }catch(Exception ex){
53 Utils.pr(this, "ERROR in UDPService.run:"+ ex);
54 }
55 }
56 //stopService.zdys--------------------------------------------------------------
57 public void stopService(){
58 stopservice= true;
59 }
60 //init.zdys---------------------------------------------------------------------
61 public void init(){
62 }
63 //end of class------------------------------------------------------------------
64 }