1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164
|
/*
Principe :
Serveur scrutant des fichiers txt afin d'appeller une URL PHP
par le protocole HTTP, le script PHP s'occupera d'éffectuer l'insertion des données.
*/
/*
MAIN.CCP
fonction principale
*/
/* LIBRAIRIES SOCKET */
//Si nous sommes sous Windows
#if defined (WIN32)
#include <winsock2.h>
#include <windows.h>
// Sinon, si nous sommes sous Linux
#elif defined (linux)
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
// Define et variables nécéssaires en fonction de OS
#define INVALID_SOCKET -1
#define SOCKET_ERROR -1
#define closesocket(s) close (s)
typedef int SOCKET;
typedef struct sockaddr_in SOCKADDR_IN;
typedef struct sockaddr SOCKADDR;
#endif
// On inclut les fichiers standards
#include <stdio.h>
#include <stdlib.h>
#include "http.h"
#include "const.h"
#include "log.h"
int main(int argc, char *argv[])
{
write_log_service("Ouverture du service");
// Si la plateforme est Windows
#if defined (WIN32)
WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);
#endif
/* VARIABLES */
SOCKET sock; /* Socket de connexion */
SOCKADDR_IN sin; /* Structure configuration socket */
char envoi [200] ={}; /* Requete à envoyer : appel de la page PHP de traitement */
formatter_requete(envoi,HOST,GET,PAGE_PHP); /* ATTENTION!!! envoi est un pointeur */
char buffer [1000] = {}; /* Buffer de récupération de la réponse http */
int i = 1; /* compteur : nombre de requetes envoyées */
int nb_char_sent = 0 ; /* compteur : nombre de caractères envoyés */
int nb_char_received = 0 ; /* compteur : nombre de caractères reçus */
int is_connected = 0 ; /* Check si client connecté */
/* Initialisation socket */
sock = socket(AF_INET, SOCK_STREAM, 0);
/* Configuration de la connexion */
sin.sin_addr.s_addr = inet_addr("127.0.0.1"); /* Host */
sin.sin_family = AF_INET; /* Connexion TCP/IP */
sin.sin_port = htons(80); /* PORT 80 */
/* Connexion : 0 si connecté */
write_log_service("Connexion au serveur ...");
is_connected = connexion(sock,sin);
if (is_connected == 0) /* Si connecté */
{
while (1) /* Boucle service */
{
write_log_service("Envoi requete au serveur - Requete : "); /* Ecriture au journal */
write_log_service(envoi);
nb_char_sent = envoyer (sock,envoi ); /* Envoi de la requete et récupération nombre octets envoyés */
if (nb_char_sent > 0) /* Si l'envoi est effectué */
{
write_log_service("Requete envoyee"); /* Ecriture au journal */
}
else /* Sinon */
{
write_log_error("Echec envoi de la requete : "); /* Ecriture au journal */
write_log_error(envoi);
}
write_log_service("Attente de la réponse "); /* Ecriture au journal */
//nb_char_received = attente_reponse( sock, buffer); /* Attente de la réponse et récupération nombre octets reçus */
nb_char_received = attente_reponse2(sock,buffer, sin);
if (nb_char_received > 0) /* Si réception d'une réponse */
{
write_log_service("Reponse reçue : "); /* Ecriture au journal */
write_log_service(buffer);
}
else /* Sinon */
{
write_log_service("Pas de réponse ..."); /* Ecriture au journal */
write_log_error("Aucune réponse reçue ");
// refaire ????
}
Sleep(1000); /* Mise en attente */
i++; /* Comptage du nombre de requetes envoyées */
}
}
/* On ferme la socket précédemment ouverte */
closesocket(sock);
// Si la plateforme est Windows
#if defined (WIN32)
WSACleanup();
#endif
write_log_service("Fermeture du service");
return EXIT_SUCCESS;
} |
Partager