commander.c 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. /*
  2. ---- Commander un effecteur ----
  3. */
  4. #include <stdio.h>
  5. #include <string.h>
  6. #ifdef WIN32
  7. /*
  8. Includes spécifiques a windows
  9. */
  10. #include <windows.h>
  11. #include <winsock.h>
  12. #else
  13. /*
  14. QNX Specific
  15. */
  16. #include <unistd.h>
  17. #include <netinet/in.h>
  18. #include <sys/socket.h>
  19. #include <sys/types.h>
  20. typedef int SOCKET;
  21. typedef struct sockaddr SOCKADDR;
  22. typedef struct sockaddr_in SOCKADDR_IN;
  23. #define closesocket(x) close(x);
  24. #define INVALID_SOCKET -1
  25. #endif
  26. #include "cgi_func.h"
  27. #include "cgi_theme_gest.h"
  28. #include "test_serre.h"
  29. char cgi_BaseName256;
  30. int main(int argc, char *argv[])
  31. {
  32. #ifdef WIN32
  33. /* Spécifique Windows 32 */
  34. struct WSAData pWSA;
  35. #endif
  36. SOCKET ConnectSocket;
  37. SOCKADDR_IN SockOPT;
  38. char *argument;
  39. cgi_start();
  40. cgi_parseparam();
  41. cgitheme_init();
  42. strncpy(cgi_BaseName,argv[0], 256);
  43. if ( (cgi_getparam("restart")) != NULL )
  44. {
  45. cgi_printfile("./files/restart.file");
  46. }
  47. else if (serre_test_start()==-1)
  48. {
  49. cgi_parsefile("./files/error-noserver.file");
  50. }
  51. else
  52. {
  53. cgi_parsefile("./files/base-start.file");
  54. argument = cgi_getparam("effecteur");
  55. if(argument != NULL)
  56. {
  57. printf("<br><br>");
  58. printf("<img src='/image/info.gif'>Connection au programme principal<br>\n");
  59. printf("<img src='/image/info.gif'>Mise en oeuvre de la liaison...<br>\n");
  60. #ifdef WIN32
  61. if ( WSAStartup(MAKEWORD(2,0),&pWSA) == 0 )
  62. {
  63. printf("<img src='/image/ok.gif'>WSAStartup<br>\n");
  64. #endif
  65. if ( (ConnectSocket = socket(AF_INET,SOCK_STREAM,0)) != INVALID_SOCKET)
  66. {
  67. printf("<img src='/image/ok.gif'>Creation de la socket<br>\n");
  68. SockOPT.sin_family = AF_INET ;
  69. SockOPT.sin_port = htons (60042);
  70. SockOPT.sin_addr.s_addr = 0x7F000001; /* 127.0.0.1: on accepte que des connection locales */
  71. if ( connect(ConnectSocket,(SOCKADDR *)&SockOPT,sizeof(SOCKADDR_IN)) != INVALID_SOCKET)
  72. {
  73. printf("<img src='/image/ok.gif'>Connection<br>\n");
  74. printf("<img src='/image/info.gif'>Envoi des donnees<br>\n");
  75. send(ConnectSocket,argument,strlen(argument),0);
  76. printf("<img src='/image/ok.gif'>Envoi effectue<br>\n");
  77. shutdown(ConnectSocket,2);
  78. printf("<img src='/image/ok.gif'>Deconnection<br>\n");
  79. closesocket(ConnectSocket);
  80. #ifdef WIN32
  81. WSACleanup();
  82. #endif
  83. printf("<img src='/image/info.gif'>Tout c'est bien passe !<br>\n");
  84. cgi_parsefile("./files/fin-commander.file");
  85. }
  86. else
  87. {
  88. printf("<img src='/image/stop.gif'>Connection<br>\n");
  89. }
  90. }
  91. else
  92. {
  93. printf("<img src='/image/stop.gif'>Creation de la socket<br>\n");
  94. }
  95. #ifdef WIN32
  96. }
  97. else
  98. {
  99. printf("<img src='/image/stop.gif'>WSAStartup<br>\n");
  100. }
  101. #endif
  102. }
  103. printf("<div align='center'><font color=#FF0000><h2>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.</h2></font></div>");
  104. cgi_parsefile("./files/base-end.file");
  105. }
  106. cgitheme_close();
  107. cgi_cleanup();
  108. return 0;
  109. }