View Javadoc

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  }