1 package rero.dcc; 2 3 import java.net.*; 4 import rero.config.*; 5 6 public class ListenDCC extends GenericDCC 7 { 8 protected ServerSocket server = null; 9 10 protected static int offset = 0; 11 protected static int timeout = 60 * 1000; 12 13 public static int getNextPort() 14 { 15 int rangeStart = ClientState.getClientState().getInteger("dcc.low", ClientDefaults.dcc_low); 16 int rangeStop = ClientState.getClientState().getInteger("dcc.high", ClientDefaults.dcc_high); 17 18 offset += 1; 19 offset = offset % (rangeStop - rangeStart); 20 21 return rangeStart + offset; 22 } 23 24 26 public int getListenerPort() 27 { 28 try 29 { 30 server = new ServerSocket(getNextPort()); 31 return server.getLocalPort(); 32 } 33 catch (Exception ex) 34 { 35 ex.printStackTrace(); 36 } 37 38 return -1; 39 } 40 41 public Socket establishConnection() 42 { 43 try 44 { 45 server.setSoTimeout(timeout); 46 return server.accept(); 47 } 48 catch (SocketTimeoutException stex) 49 { 50 getImplementation().fireError("timed out waiting for connection"); 51 } 52 catch (Exception ex) 53 { 54 ex.printStackTrace(); 55 56 getImplementation().fireError(ex.getMessage()); 57 } 58 59 return null; 60 } 61 } 62 | Popular Tags |