#include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/wait.h> #include <netinet/in.h> #include <netdb.h> #include <stdlib.h> #include <math.h> #include <string.h> #include <signal.h> #include <errno.h> #define PORT 3498 #define DISP 1 #define DEST (-1) #define MAX_RETRIES 5 /*the client will try up to MAX_RETRIES times to connect to the dispatcher.*/ #define MAX_QUEUE 5 //#define BUSY 1 //#define IDLE 0 #define RETRY_DELAY 1 #define DELAY 30 /*define a structure of the node in the server's list. including the information of the ip address, port number and services provided by servers.*/ typedef struct serverlist { char addr[50]; /*server's ip address.*/ int port; /*server's port no.*/ int sid; /*services provied by the server.*/ struct serverlist *next; }s_list; /*function prototypes*/ void roundrobin(s_list **); void searchlist(s_list **); void addlist(s_list **,s_list *); void deletelist(s_list **,char*, int ); int connect_remote(char *,int,int *,struct sockaddr_in *); int bind_remote(int,int *,struct sockaddr_in *); int operation(char *,int,int,int*); int sum(int,int,int*); int product(int,int,int *); void myhandler(int); int provide_service(char *);