Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1614 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Export depuis serveur web

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Export depuis serveur web

n°2219121
clubber43
Posté le 10-02-2014 à 13:38:47  profilanswer
 

Bonjour,  
J'ai deja ouvert un post sur la partie prog en PERL pour l'export de données
depuis un serveur web. après pas mal de recherche, je vais faire ce programme en C.
 
 
http://forum.hardware.fr/hfr/Progr [...] m#t2219083
 
Si quelqu'un passe par là, j'ai les bases de C et C++ et je debute en PERL . . .  
 
Merci
 
ju

mood
Publicité
Posté le 10-02-2014 à 13:38:47  profilanswer
 

n°2219141
gilou
Modérateur
Modzilla
Posté le 10-02-2014 à 15:08:45  profilanswer
 

1) C'est pas un serveur web mais tcp
2) le code perl est transparent:
 
creation d'une socket
socket(SERVER, PF_INET, SOCK_STREAM, getprotobyname('tcp'));  
et ouverture
connect(SERVER, sockaddr_in($MODBUS_PORT, $server_ip)
creation d'une requête (encodage des parametres dans un paquet ad-hoc)
envoi de la requête
send(SERVER, $tx_buffer, 0);
reception, sur lequel on parse d'abord l'en-tête
recv(SERVER, $rx_buffer, 7, 0);  
et le reste après verification de l'en tete
recv(SERVER, $rx_buffer, $rx_hd_length-1, 0);  
decodage des données de la réponse.
fermeture de la socket
close SERVER;
 
Bref du code réseau complètement standard.
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2219143
clubber43
Posté le 10-02-2014 à 15:10:39  profilanswer
 

oui,  
 
c'est vrai, code réseau standard, quand on connait le PERL,  
j'ai que 5-6 heures de Perl à mon actif, et donc je débute encore . . .  
 
Si j'ai des questions, je n'hesiterai pas à revenir ici, c'est super comme forum et rapide ^^
 
merci gilou :)

n°2219173
tpierron
Posté le 10-02-2014 à 17:18:26  profilanswer
 

clubber43 a écrit :

c'est vrai, code réseau standard, quand on connait le PERL


 
Quand on connait l'API des sockets BSD pour être exact (http://en.wikipedia.org/wiki/Berkeley_sockets), en général c'est relativement indépendant du langage (bien que l'API ait été faite pour du C à la base). J'ai l'impression que tu ne connais pas cette API, lorsque tu dis dans un de tes messages :
 

clubber43 a écrit :

je ne savais pas que l'on pouvait travailler directement sur les TCP en C / C++ . . .


 
Bon, va falloir t'y mettre alors, parce le code C sera très similaire au code PERL qui a été posté. Le nom des fonctions et leurs arguments sont pareils. Les quelques trucs spécifiques à PERL sont la construction de la requète et l'analyse de la réponse.
 
Cette API date un peu, il y a quelques aspects archaïques, mais sa tient retivement bien la route pour un truc aussi vieux.

n°2219275
gilou
Modérateur
Modzilla
Posté le 11-02-2014 à 17:04:41  profilanswer
 

En cherchant un peu, on découvre l'existence d'une librairie "multiplateforme" libmodbus qui fait le boulot simplement
 
Pour faire votre requête spécifique:

Code :
  1. #include <stdio.h>
  2. #include <stdint.h>
  3. #include <modbus.h>
  4. int main(int argc, char *argv[])
  5. {
  6.     modbus_t *ctx;
  7.     int adresse = 264;
  8.     uint16_t valeur;
  9.     int rc;
  10.     ctx = modbus_new_tcp("192.168.1.253", MODBUS_TCP_DEFAULT_PORT);
  11.     if (modbus_connect(ctx) == -1) {
  12.         fprintf(stderr, "Connection failed: %s\n", modbus_strerror(errno));
  13.         modbus_free(ctx);
  14.         return -1;
  15.     }
  16.     rc = modbus_read_registers(ctx, adresse, 1, &valeur);
  17.     if (rc == -1) {
  18.         fprintf(stderr, "%s\n", modbus_strerror(errno));
  19.         modbus_close(ctx);
  20.         modbus_free(ctx);
  21.         return -1;
  22.     }
  23.     if (rc != 1) {
  24.         fprintf(stderr, "trop de valeurs retournées\n" );
  25.         modbus_close(ctx);
  26.         modbus_free(ctx);
  27.         return -1;
  28.     }
  29.     printf("<%d>: %d\n", adresse, valeur);
  30.     modbus_close(ctx);
  31.     modbus_free(ctx);
  32.     return 0;
  33. }


 
Multiplateforme est avec des "" parce que c'est pas ainsi que je qualifie du code qui ne se compile qu'avec Cygwin sous Windows..
 
A+,


Message édité par gilou le 11-02-2014 à 17:11:30

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Export depuis serveur web

 

Sujets relatifs
[Résolu] Export données en perlserveur web embarqué
Outil calcul temps génération de la page serveurserveur et client réseau sur même machine
[SQL] Répliquer/Synchroniser BDD sur serveur distantMon serveur Nas veut pas récupérer le contenu du dossier à distance ?
Serveur Minecraftmini serveur en C: setsockopt() == -1
Blocage de mon Serveur de tchat (AcceptTcpClient)Connection à un serveur
Plus de sujets relatifs à : Export depuis serveur web


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR