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 }