import java.net.*;import java.util.*;import java.io.*;//import class.*;//import myMulticastSocket;public class VChatClient implements ChatProcessor {// para termos informacao sobre multicastGroup e porta, a usar nas funcoes em baixo: ConfigInfo userInfo; myMulticastSocket ms; public static void main( String[] args) { new VChatClient().doit(); } protected ChatUIImpl chatui; VChatClient() { init(); } protected void init() { chatui = new ChatUIImpl( this); } protected void doit() { // IMPORTANTE: informacao deve ser actualizada para evitar conflitos //ConfigInfo userInfo; try { userInfo = new ConfigInfo( "", InetAddress.getByName("225.10.23.45"), 8000); boolean loginOk = chatui.getConfig( userInfo, true); System.out.println( "login: " + loginOk); } catch( UnknownHostException e) { e.printStackTrace(); } chatui.startClient(); } //========================================================================= // FUNCOES CHAMADAS PELO INTERFACE //========================================================================= /** * Invocado pela interface para indicar desejo do utilizador de entrar numa sala de chat. * Como resultado, deve ser devolvido false se nao e possivel entrar na sala de chat * ou true caso seja possivel - neste caso, o interface apresentara a janela do chat * (e tornara invisivel a janela com a lista de salas) */ public boolean enterChatRoom( String ircname) { // TODO Completar codigo //temos que fazer o nosso J return true; } /** * Invocado pela interface para obter a lista de salas de chat. */ public List<String> getChatNames() { List<String> list = new ArrayList<String>(); // TODO Completar codigo //fazemos o nosso L System.out.println( "Obter lista de nomes"); try{ ms = new myMulticastSocket(userInfo.getPort()); ms.joinGroup(userInfo.getAddress()); myDatagamSocket receiveSocket = new myDatagramSocket(); //tenho que descobrir como int port = receiveSocket.getLocalPort(); myDatagramPacket p = new myDatagramPacket(("L "+port).getBytes()); ms.send(p); List<String> rooms; receiveSocket.setSoTimeout(2000); myDatagramPacket answer = new myDatagramPacket(new byte[65336], 655336); String tmp; try{ while(true){ receiveSocket.receive(answer); tmp = new String(answer.getData(),0, answer.getData().getLength()); rooms.add(tmp); receiveSocket.setSoTimeout(2000); } }catch (SocketTimeoutException x){} } catch(Exception e){}; return list; }// public void setChatNames(List<String> rooms){// setChatNames(getChatNames());// return;// } /** * Invocado pela interface para indicar que o utilizador pretende sair da sala de chat * Como resultado, o interface apresentara a janela com a lista das salas. */ public void leaveChatRoom( String ircname) { // TODO Completar codigo //fazemos o leave } /** * Invocado pela interface para iniciar a transferência do ficheiro filename para o * utilizador username */ public void sendFile( String ircname, String username, String filename) { // TODO Completar codigo } /** * Invocado pela interface quando o utilizador pretende enviar mensagem */ public void sendMessage( String ircname, String msg) { // TODO Completar codigo }}