void gestion_menu_diff(liste_dif * tmp,int flag){ printf("ETAPE 1"); int nb=length(tmp); liste_dif ** selection = (menu_diffuseurs(tmp,nb)); printf("ETAPE 2"); liste_dif * lst; if(selection !=NULL){ clear_liste(&liste_tmp); lst=*selection; }else{ return; } breakpointe(); switch (menu_action_diff(flag)) { case 0: while(lst!=NULL) {// ajout a la liste de lecture init_sockUDP(lst->diff); pthread_t * th = malloc(sizeof(pthread_t)); lst->diff->th=th; pthread_create(th, NULL, run_lecture, lst->diff); lst=lst->suivant; } transfert_liste(*selection, &liste); break; case 1: diffuser_message(*selection);//pas tester break; case 2: display_old_mess(*selection);//pas tester break; case 3: break; } clear_liste(&liste_tmp); }
void Channels::run() { //Get a updated library try { vector<AddrStorage*> addr; // Client::synchronize(addr); if(addr.size()<1) throw (Exception("There is no server active, unable ton find a library.",__LINE__)); // _lib = Client::get_library(*(addr[0])); //Client::disconnect(addr); } catch(Exception e) { //No other server is running, lib stay empty } //Initialization of socket descriptor cout<<"mon adresse est "<<monAdresse()<<"\n"; fd_set readfds; int max = 0; FD_ZERO(&readfds); for(int i=0;i<_n_socks;i++) { FD_SET(_sockets[i], &readfds); if(_sockets[i]>max) max = _sockets[i]; } char *buf = new char[MAXLEN]; AddrStorage *addr = new AddrStorage[MAXSOCK]; //Start server (infinite loop) while(_run) { if(select(max+1, &readfds, NULL, NULL, NULL)>0) { for(int i = 0; i< _n_socks; i++) { if(FD_ISSET(_sockets[i], &readfds)) { char * buffer = new char[MAXLEN]; // cout <<"nommbre de connecte avant est "<<actuel<<"\n"; lire_message(&addr[i],buf,_sockets[i]); actuel++; //char * config = new char [MAXLEN]; // cout<<"Fichier de configuration pour ce client \n"; //fgets(config,MAXLEN,stdin); // Client nouveaux(config); //AddrStorage adresse = nouveaux.monAdresse(); // cout <<"nommbre de connecte apres est "<<actuel<<"\n"; chnl.clients[i] = addr[i];; cout<<"Element du canal \n "<< addr[i] <<"\n Socket associé \n "<<_sockets[i]<<"\n"; if(&addr[i]!=NULL) diffuser_message(_sockets[i],chnl,addr[i],buffer); delete [] buffer; } } } else throw (Exception("Server::server : select failed.",__LINE__)); } }