/* * ConnectionListner.java * * Created on den 31 augusti 2001, 23:03 */ package ip1.u3.b; import java.net.*; /** ConnectionListener ligger i sin egen tråd och lyssnar efter anslutande * klienter. När en sådan ansluter sig skapas en ClientListener för klienten * och kontrollklassens add-metod anropas med denna som argument, därefter * återgår ConnectionListener till att lyssna efter nya klienter. * * @author Henrik Johansson, DS80 * @version ht2001 */ public class ConnectionListener implements Runnable { private java.net.ServerSocket serverSocket = null; private ChatServer server = null; /** Skapar en ny ConnectionListner * *@param server Kontrollklassen *@param port Porten som skall avlyssnas. */ public ConnectionListener(ChatServer server, int port) { this.server = server; try { serverSocket = new ServerSocket(port); (new Thread(this)).start(); } catch(java.io.IOException e) { System.err.println(e.getMessage()); System.exit(1); } } /** Returnerar namnet på värddatorn*/ public String getHost() { try { return serverSocket.getInetAddress().getLocalHost().getHostName(); } catch(UnknownHostException e) { System.err.println(e.getMessage()); } return null; } /** Stänger socketen*/ protected void close() { try { serverSocket.close(); } catch(java.io.IOException e) { System.err.println(e.getMessage()); } } /** TRåden som lyssnar efter nya klienter*/ public void run() { java.net.Socket socket; try { while((socket = serverSocket.accept()) != null) { new ClientListener(server, socket); } } catch(java.io.IOException e) { System.err.println(e.getMessage()); } } }