public static ServerSocket createServerSocket(SocketFactory factory, String service_name, InetAddress bind_addr, int start_port) { ServerSocket ret=null; try { ret=factory.createServerSocket(service_name); Util.bind(ret, bind_addr, start_port, start_port+1000, 50); return ret; } catch(Exception e) { return null; } }
/** * Finds first available port starting at start_port and returns server * socket. Will not bind to port >end_port. Sets srv_port */ public static ServerSocket createServerSocketAndBind(SocketFactory factory,String service_name,InetAddress bind_addr, int start_port,int end_port) throws Exception { ServerSocket ret=factory.createServerSocket(service_name); bind(ret, bind_addr, start_port, end_port); return ret; }
public static ServerSocket createServerSocket(SocketFactory factory,String service_name,InetAddress bind_addr, int start_port,int end_port) throws Exception { int original_start_port=start_port; ServerSocket srv_sock=null; while(true) { try { if(srv_sock != null); Util.close(srv_sock); srv_sock=factory.createServerSocket(service_name); InetSocketAddress sock_addr=new InetSocketAddress(bind_addr, start_port); srv_sock.bind(sock_addr); return srv_sock; } catch(SocketException bind_ex) { if(start_port == end_port) throw new BindException(String.format("no port available in range [%d .. %d] (bind_addr=%s)", original_start_port, end_port, bind_addr)); if(bind_addr != null && !(bind_addr.isLoopbackAddress() || bind_addr.isAnyLocalAddress())) { NetworkInterface nic=NetworkInterface.getByInetAddress(bind_addr); if(nic == null) throw new BindException("bind_addr " + bind_addr + " is not a valid interface: " + bind_ex); } start_port++; } } }
private void createServerSocket(String serviceName, String bindingName) throws IOException { ManagedServerSocketFactory factory = mock(ManagedServerSocketFactory.class); ServerSocket socket1 = mock(ServerSocket.class); ServerSocket socket2 = mock(ServerSocket.class); ServerSocket socket3 = mock(ServerSocket.class); ServerSocket socket4 = mock(ServerSocket.class); InetAddress localhost = InetAddress.getLocalHost(); when(this.manager.getServerSocketFactory()).thenReturn(factory); when(factory.createServerSocket(bindingName)).thenReturn(socket1); when(factory.createServerSocket(bindingName, 1)).thenReturn(socket2); when(factory.createServerSocket(bindingName, 1, 0)).thenReturn(socket3); when(factory.createServerSocket(bindingName, 1, 0, localhost)).thenReturn(socket4); ServerSocket result1 = this.subject.createServerSocket(serviceName); ServerSocket result2 = this.subject.createServerSocket(serviceName, 1); ServerSocket result3 = this.subject.createServerSocket(serviceName, 1, 0); ServerSocket result4 = this.subject.createServerSocket(serviceName, 1, 0, localhost); assertSame(socket1, result1); assertSame(socket2, result2); assertSame(socket3, result3); assertSame(socket4, result4); }
@Override public ServerSocket createServerSocket(String name, int port, int backlog) throws IOException { return this.register(this.factory.createServerSocket(name, port, backlog)); }
public static ServerSocket createServerSocket(SocketFactory factory, String service_name, InetAddress bind_addr, int start_port) { ServerSocket ret=null; try { ret=factory.createServerSocket(service_name); Util.bind(ret, bind_addr, start_port, start_port+1000, 50); return ret; } catch(Exception e) { return null; } }
/** * Finds first available port starting at start_port and returns server * socket. Will not bind to port >end_port. Sets srv_port */ public static ServerSocket createServerSocketAndBind(SocketFactory factory,String service_name,InetAddress bind_addr, int start_port,int end_port) throws Exception { ServerSocket ret=factory.createServerSocket(service_name); bind(ret, bind_addr, start_port, end_port); return ret; }
@Override public ServerSocket createServerSocket(String name, int port, int backlog) throws IOException { return this.register(this.factory.createServerSocket(name, port, backlog)); }
@Override public ServerSocket createServerSocket(String name, int port, int backlog, InetAddress bindAddr) throws IOException { return this.register(this.factory.createServerSocket(name, port, backlog, bindAddr)); }
@Override public ServerSocket createServerSocket(String name) throws IOException { return this.register(this.factory.createServerSocket(name)); }
@Override public ServerSocket createServerSocket(String name, int port, int backlog, InetAddress bindAddr) throws IOException { return this.register(this.factory.createServerSocket(name, port, backlog, bindAddr)); }
@Override public ServerSocket createServerSocket(String name) throws IOException { return this.register(this.factory.createServerSocket(name)); }
@Override public ServerSocket createServerSocket(String name, int port) throws IOException { return this.register(this.factory.createServerSocket(name, port)); }
@Override public ServerSocket createServerSocket(String name, int port) throws IOException { return this.register(this.factory.createServerSocket(name, port)); }
public static ServerSocket createServerSocket(SocketFactory factory,String service_name,InetAddress bind_addr, int start_port,int end_port) throws Exception { int original_start_port=start_port; ServerSocket srv_sock=null; while(true) { try { if(srv_sock != null); Util.close(srv_sock); srv_sock=factory.createServerSocket(service_name); InetSocketAddress sock_addr=new InetSocketAddress(bind_addr, start_port); srv_sock.bind(sock_addr); return srv_sock; } catch(SocketException bind_ex) { if(start_port == end_port) throw new BindException(String.format("no port available in range [%d .. %d] (bind_addr=%s)", original_start_port, end_port, bind_addr)); if(bind_addr != null && !(bind_addr.isLoopbackAddress() || bind_addr.isAnyLocalAddress())) { NetworkInterface nic=NetworkInterface.getByInetAddress(bind_addr); if(nic == null) throw new BindException("bind_addr " + bind_addr + " is not a valid interface: " + bind_ex); } start_port++; } } }
@Test public void createServerSocket() throws IOException { ServerSocket socket1 = new ServerSocket(); ServerSocket socket2 = new ServerSocket(); ServerSocket socket3 = new ServerSocket(); ServerSocket socket4 = new ServerSocket(); InetAddress localhost = InetAddress.getLocalHost(); when(this.factory.createServerSocket("test")).thenReturn(socket1); when(this.factory.createServerSocket("test", 1)).thenReturn(socket2); when(this.factory.createServerSocket("test", 1, 0)).thenReturn(socket3); when(this.factory.createServerSocket("test", 1, 0, localhost)).thenReturn(socket4); ServerSocket result1 = this.subject.createServerSocket("test"); ServerSocket result2 = this.subject.createServerSocket("test", 1); ServerSocket result3 = this.subject.createServerSocket("test", 1, 0); ServerSocket result4 = this.subject.createServerSocket("test", 1, 0, localhost); verify(this.manager.getUnnamedRegistry()).registerSocket(socket1); verify(this.manager.getUnnamedRegistry()).registerSocket(socket2); verify(this.manager.getUnnamedRegistry()).registerSocket(socket3); verify(this.manager.getUnnamedRegistry()).registerSocket(socket4); assertSame(socket1, result1); assertSame(socket2, result2); assertSame(socket3, result3); assertSame(socket4, result4); }