/**************************************************************************/ /* */ /* P1 - MI amb sockets TCP/IP - Part I */ /* Fitxer p2p.c que implementa la interfície aplicació-usuari de */ /* l'aplicació de MI, sobre la capa d'aplicació de MI (fent crides a la */ /* interfície de la capa MI -fitxers mi.c i mi.h-). */ /* */ /* Autors: Marc Cané Salamià, Enric Rodríguez Galán */ /* */ /**************************************************************************/ /* Inclusió de llibreries, p.e. #include o #include "meu.h" */ /* Incloem "MIp1v4-mi.h" per poder fer crides a la interfície de MI */ //#include "MIp2-mi.h" #include "MIp2-lumi.h" #include "stdio.h" #include #include #include #include #include #include #include #include #include /* Definició de constants, p.e., #define MAX_LINIA 150 */ #define MAX_MISSATGE 300 #define IP_LENGTH 16 #define TECLAT 0 #define MARCA_FI "/end" int main(int argc,char *argv[]) { /* Declaració de variables, p.e., int n; */ int sesc, scon, slumi; //socket descriptor dels sockets int port=0, port_loc, port_rem; //port: farà de port local o remot segons la situació. Les variables port_loc i port_rem son per claretat de codi. char IPloc[IP_LENGTH], IPrem[IP_LENGTH], IPnode[IP_LENGTH]; //IPs local i remota i del node char adrLUMIloc[MAX_LEN_DOMINI+MAX_USER_NICK+1], adrLUMIrem[MAX_LEN_DOMINI+MAX_USER_NICK+1]; char nickname_l[MAX_MISSATGE], nickname_r[MAX_MISSATGE]; //Nicknames local i remot //char vols_continuar; //Eleccio de l'usuari int fitxer_log; int usuari_vol_conversa=1, connectat = 0, res; //Boolea per saber si l'usuari vol seguir parlant /* Expressions, estructures de control, crides a funcions, etc. */ printf("Entra la teva @MI: "); scanf("%s", adrLUMIloc); //strcpy(adrLUMIloc,"Enric@localhost"); if ((slumi = LUMI_InicialitzarAgent("0.0.0.0",0, &fitxer_log, adrLUMIloc, IPnode)) < 0){ //Apagar tot close(slumi); //close(sesc); return 1; } //printf("Landmark"); res = LUMI_EnviaPeticioRegistre(slumi, adrLUMIloc); if (res == -5) printf("El node esta 7at"); else if(res < 0){ close(slumi); printf("FAIL%i\n",res); //close(sesc); return 1; } else printf("Registrat correctament\n"); if (strcmp(adrLUMIloc,"Enric@localhost") != 0){ int llista[] = {slumi}; HaArribatAlgunaCosaEnTemps(llista, 1, 0); char resposta[MAX_MISSATGE_PLUMI]; LUMI_RepLiniaDe(slumi, NULL, NULL, resposta, sizeof(resposta)); LUMI_DescodificarMissatge(resposta[0], resposta, adrLUMIrem, NULL, NULL); printf("%s ens vol localitzar\n", adrLUMIrem); int res2 = LUMI_EnviaRespostaServeiLocalitzacio(slumi, adrLUMIrem, "10.0.0.13", 1337); printf("Localitzacio: %i\n", res2); } else{ //scanf("%s", adrLUMIrem); strcpy(adrLUMIrem,"Marc@localhost"); res = LUMI_EnviaPeticioLocalitzacio(slumi, adrLUMIloc, adrLUMIrem, IPrem, &port_rem, adrLUMIrem); printf("Hola!\n"); if (res == -5) printf("El node esta 7at"); else if(res < 0){ close(slumi); //close(sesc); return 1; } else printf("Localitzat correctament\n"); } res = LUMI_EnviaPeticioDesregistre(slumi); if (res == -5) printf("El node esta 7at"); else if(res < 0){ close(slumi); //close(sesc); return 1; } else printf("Desregistrat correctament\n"); /*Localitzar(); Desregistrar();*/ return 0; }