1 package org.sourceforge.jemm.comm.connection.socket; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.io.OutputStream; 6 import java.net.ServerSocket; 7 import java.net.Socket; 8 9 import org.sourceforge.jemm.comm.connection.Connection; 10 import org.sourceforge.jemm.comm.connection.ConnectionException; 11 import org.sourceforge.jemm.comm.connection.ServerConnectionFactory; 12 13 public class SocketServerConnectionFactory implements ServerConnectionFactory { 14 15 private final int port; 16 private ServerSocket serverSocket; 17 18 public SocketServerConnectionFactory(int port) { 19 this.port = port; 20 } 21 22 23 @Override 24 public void close() throws ConnectionException { 25 try { 26 serverSocket.close(); 27 }catch(IOException ioe) { 28 throw new ConnectionException("Error generated whilst closing server port",ioe); 29 } 30 } 31 32 @Override 33 public Connection getClientConnection() throws ConnectionException { 34 try { 35 Socket socket = serverSocket.accept(); 36 InputStream is = socket.getInputStream(); 37 OutputStream os = socket.getOutputStream(); 38 return new SocketConnection(socket,is,os,"from:" + socket.getRemoteSocketAddress().toString(), 39 socket.getPort()); 40 }catch(IOException ioe) { 41 throw new ConnectionException("Error accepting remote connection",ioe); 42 } 43 } 44 45 @Override 46 public void initialise() throws ConnectionException { 47 try { 48 serverSocket = new ServerSocket(port); 49 }catch(IOException ioe) { 50 throw new ConnectionException("Error openning port for connection",ioe); 51 } 52 } 53 }