/* ---- Commander un effecteur ---- */ #include #include #ifdef WIN32 /* Includes spécifiques a windows */ #include #include #else /* QNX Specific */ #include #include #include #include typedef int SOCKET; typedef struct sockaddr SOCKADDR; typedef struct sockaddr_in SOCKADDR_IN; #define closesocket(x) close(x); #define INVALID_SOCKET -1 #endif #include "cgi_func.h" #include "cgi_theme_gest.h" #include "test_serre.h" char cgi_BaseName256; int main(int argc, char *argv[]) { #ifdef WIN32 /* Spécifique Windows 32 */ struct WSAData pWSA; #endif SOCKET ConnectSocket; SOCKADDR_IN SockOPT; char *argument; cgi_start(); cgi_parseparam(); cgitheme_init(); strncpy(cgi_BaseName,argv[0], 256); if ( (cgi_getparam("restart")) != NULL ) { cgi_printfile("./files/restart.file"); } else if (serre_test_start()==-1) { cgi_parsefile("./files/error-noserver.file"); } else { cgi_parsefile("./files/base-start.file"); argument = cgi_getparam("effecteur"); if(argument != NULL) { printf("

"); printf("Connection au programme principal
\n"); printf("Mise en oeuvre de la liaison...
\n"); #ifdef WIN32 if ( WSAStartup(MAKEWORD(2,0),&pWSA) == 0 ) { printf("WSAStartup
\n"); #endif if ( (ConnectSocket = socket(AF_INET,SOCK_STREAM,0)) != INVALID_SOCKET) { printf("Creation de la socket
\n"); SockOPT.sin_family = AF_INET ; SockOPT.sin_port = htons (60042); SockOPT.sin_addr.s_addr = 0x7F000001; /* 127.0.0.1: on accepte que des connection locales */ if ( connect(ConnectSocket,(SOCKADDR *)&SockOPT,sizeof(SOCKADDR_IN)) != INVALID_SOCKET) { printf("Connection
\n"); printf("Envoi des donnees
\n"); send(ConnectSocket,argument,strlen(argument),0); printf("Envoi effectue
\n"); shutdown(ConnectSocket,2); printf("Deconnection
\n"); closesocket(ConnectSocket); #ifdef WIN32 WSACleanup(); #endif printf("Tout c'est bien passe !
\n"); cgi_parsefile("./files/fin-commander.file"); } else { printf("Connection
\n"); } } else { printf("Creation de la socket
\n"); } #ifdef WIN32 } else { printf("WSAStartup
\n"); } #endif } printf("

Si se message apparait, c'est qu'un erreur c'est produite lors de la demande de changement d'etat manuel d'un des effecteurs.

"); cgi_parsefile("./files/base-end.file"); } cgitheme_close(); cgi_cleanup(); return 0; }