############################################################################
Programma della conferenza distribuita
Copyright (C) 19aa
Autori: Andrea Lanzi, Giampaolo Fresi Roglia
Questo programma e' software libero; e' lecito ridistribuirlo e/o
modificarlo secondo i termini della Licenza Pubblica Generica GNU
come pubblicata dalla Free Software Foundation; o la versione 2
della licenza o (a scelta) una versione successiva.
Questo programma e' distribuito nella speranza che sia utile, ma
SENZA ALCUNA GARANZIA; senza neppure la garanzia implicita di
COMMERCIABILITA' o di APPLICABILITA' PER UN PARTICOLARE SCOPO. Si
veda la Licenza Pubblica Generica GNU per avere maggiori dettagli.
Ognuno dovrebbe avere ricevuto una copia della Licenza Pubblica
Generica GNU insieme a questo programma; in caso contrario, la si
puo' ottenere dalla Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, Stati Uniti.
Gli autori possono essere contattati ai seguenti indirizzi:
Andrea Lanzi : shadow.net@tiscalinet.it
Giampaolo Fresi Roglia : gian_fresi@iol.it
##########################################################################
#include <termio.h>
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <errno.h>
#include <sys/time.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
#define NMAX 20
// STRUTTURA PER LA GESTIONE DELLA COMUNICAZIONE TRA ORATORE E
// PARTECIPANTI
struct lista_ind {
int fd;
unsigned long indirizzo;
int porta;
struct lista_ind *next;
struct lista_ind *prec;
};
typedef struct lista_ind partecipanti;
struct lista_ind;
// DEFINIZIONE DEI PROTOTIPI DELLE FUNZIONI
int iscrizione (char HOST_ADDR[], int coord_port, int *coord_sock, int *serv_sock);
int iscr_parl(int sockfd);
int rinuncia (int sockfd);
int disconnetti(int sockfd);
void menu();
int gest_conv(int coord_sock);
int mk_list (struct lista_ind **lista);
int init_conv (int sockfd, struct lista_ind **lista);
int rm_cli(partecipanti **, int , int) ;
int add_cli (struct lista_ind **lista, int sockfd, unsigned long indirizzo, int porta);
int passive_socket(int port, int backlog);
int active_socket(int port, char *host );
void set_term_unbuf(struct termios *old_term_options);
void set_term_buf(struct termios term_options);