[RESOLU] connection socket

connection socket [RESOLU] - C - Programmation

Marsh Posté le 15-03-2007 à 10:36:22    

HELLO  :hello:  
 
  Voila je suis étudiant en 2eme année bts info et je souhaite réaliser une connection par socket sur un poste distant par module beck et ainsi récupérer les informations contenue dans une base de donnée mysql.  
  J'ai réussi à réaliser la connection au socket avec une écoute, et je suis arrivé à créer un envoi de donnée, le problème est que le beck ne prend pas en charge Mysql et lorsque j'envoi directement les requêtes, ex :
Select * from monmagasin
  Cela ne donne rien...
  Un collègue qui lui effectue la même tache avec un module tini (programmation java et prise en charge Mysql) envoie la même requête de la même facon, et celle ci est prise en charge et lui retourne les valeurs contenues dans la base de donnée.
  Si quelqu'un avait une idée de pourquoi la requète envoyée n'est pas executée...
 
  Voici la fonction d'envoie :
//send
      retval = send( sd,  (char *) sendbuf, TM_TCPECHOBUF_CLIENT_SENDSIZE, 0, &error );
 
      if(retval == API_ERROR)
      {
         #ifdef TCP_ECHO_CLIENT_DEBUG
          printf("\r\nErreur d'envoi %d",error);
         #endif
 
         goto TCP_CLIENT_DONE;          //balise qui apparait plus tard dans le programme  
      }
 
      #ifdef PRINT_DATA                    //affiche ce que j'envoi, la j'ai tout retiré pour plus de lisibilité
   printf("\r\nTCPClient:\r\nSending :\r\n" );
   for(i=0;i<TM_TCPECHOBUF_CLIENT_SENDSIZE;i++)
   {
    printf("",(char)sendbuf[i]);
   }
    #endif
 
sendbuf est un tableau de 40 charactères ou j'envoie la requete:
 
#define TM_TCPECHOBUF_CLIENT_SENDSIZE    40
char sendbuf[TM_TCPECHOBUF_CLIENT_SENDSIZE ]="select * from mon_magasin";    
//que je mette ou non ; à la fin ca ne change rien ->erreur
 
  une fois le programme executé, le serveur recoit la requète, ne l'execute pas, et affiche un signal d'erreur :
Erreur SQL : You have an error in your sql syntax.
  Pourtant le serveur affiche bien : select * from mon_magasin;
Si quelqu'un a des idées...
merci d'avance a+

Message cité 1 fois
Message édité par aneurysm le 29-03-2007 à 17:13:42
Reply

Marsh Posté le 15-03-2007 à 10:36:22   

Reply

Marsh Posté le 15-03-2007 à 11:07:30    

En écrivant un protocole ?


---------------
Töp of the plöp
Reply

Marsh Posté le 15-03-2007 à 11:14:02    

man 2 read

Reply

Marsh Posté le 15-03-2007 à 11:18:42    

Et si j'envoyai directement les requetes mysql?

Reply

Marsh Posté le 15-03-2007 à 11:28:36    

Bah il faudrait que ce soit à un serveur mysql ...
 
T'as lu ton cours de réseau ?


---------------
Töp of the plöp
Reply

Marsh Posté le 15-03-2007 à 11:32:10    

... si je demande si je peux envoyer directement les requetes mysql...  
c'est que oui c'est un serveur mysql...
 
EDIT: merci de me prendre pour un con au fait lol


Message édité par aneurysm le 15-03-2007 à 11:32:45
Reply

Marsh Posté le 15-03-2007 à 11:39:17    

'k lol
 
Faudrait savoir exposer un problème, ma boule de crystal a bien du mal, je te prie de l'excuser.


---------------
Töp of the plöp
Reply

Marsh Posté le 15-03-2007 à 11:39:56    

bah si t'es si intelligent, range tes sockets et utilise la bibliothèque C de MySQL

Reply

Marsh Posté le 15-03-2007 à 11:59:05    

Taz a écrit :

bah si t'es si intelligent, range tes sockets et utilise la bibliothèque C de MySQL


[:rofl]


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 15-03-2007 à 17:02:08    

lol si tu savai lire tu aurai vu que je dois l'utiliser avec un beck qui ne supporte pas mysql, il faudra que je le simule ensuite avec sqlwrapper...  
tu as saisi?

Message cité 1 fois
Message édité par aneurysm le 15-03-2007 à 17:12:52
Reply

Marsh Posté le 15-03-2007 à 17:02:08   

Reply

Marsh Posté le 15-03-2007 à 17:23:42    

j'y peux quoi si t'es atteint de NIH [:spamafote]


Message édité par Taz le 15-03-2007 à 17:23:51
Reply

Marsh Posté le 15-03-2007 à 17:30:17    

j'y peux rien si tu as des problemes de lecture...

Reply

Marsh Posté le 15-03-2007 à 17:34:18    

aneurysm a écrit :

lol si tu savai lire tu aurai vu que je dois l'utiliser avec un beck qui ne supporte pas mysql, il faudra que je le simule ensuite avec sqlwrapper...  
tu as saisi?


[:ciler]
T'as dit tout ça avant c'est vrai ??


---------------
Töp of the plöp
Reply

Marsh Posté le 16-03-2007 à 13:53:13    

j'ai di que j'allai devoir utiliser un beck, alors effectivement si vous ne saviez pas ce que c'était ( et plus spécialement taz..), il aurait fallu me le demander...
effectivement j'aurai pu le dire dès le debut mais j'avai pensé que vous saviez ce que c'était.
bref j'ai pas envie de polémiquer 4 plombes dessus... je modifie le post original si quelqu'un a des idées...

Reply

Marsh Posté le 16-03-2007 à 18:56:45    

aneurysm a écrit :

 Voici la fonction d'envoie :
//send
      retval = send( sd,  (char *) sendbuf, TM_TCPECHOBUF_CLIENT_SENDSIZE, 0, &error );
 


 [:arrakys]  

int send(int s, const void *msg, size_t len, int flags);  


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 16-03-2007 à 19:36:19    

Emmanuel Delahaye a écrit :

int send(int s, const void *msg, size_t len, int flags);



T'as été le seul à remarquer qu'il y avait un paramètre en trop dans la fonction alors que c'est écrit depuis le début.  :bounce:
Trop trop fort... :sol:


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 16-03-2007 à 20:54:36    

Sve@r a écrit :

T'as été le seul à remarquer qu'il y avait un paramètre en trop dans la fonction alors que c'est écrit depuis le début.  :bounce:
Trop trop fort... :sol:

 
aneurysm a écrit :

Message édité par aneurysm le 16-03-2007 à 14:07:44

 

[:god]


Message édité par _darkalt3_ le 16-03-2007 à 20:54:48

---------------
Töp of the plöp
Reply

Marsh Posté le 19-03-2007 à 08:16:29    

nan il n'y a pas de paramètres en trop ni en moins, si j'en retire il me donne une erreur de compilation, "too few parameter".

Message cité 1 fois
Message édité par aneurysm le 19-03-2007 à 08:20:21
Reply

Marsh Posté le 19-03-2007 à 08:21:51    

aneurysm a écrit :

nan il n'y a pas de paramètres en trop ni en moins, si j'en retire il me donne une erreur de compilation, "too few parameter".


Alors tu as une version des sockets non POSIX.1. Si c'est le cas, je ne sais pas répondre.


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 19-03-2007 à 08:57:53    

j'ai une version de DOS allégé sur le beck, c'est peut être pour ca...
tu crois qu'il peut y avoir des problèmes de compréhension étant donné que le serveur est géré (et paramétré) par ubuntu?

Reply

Marsh Posté le 19-03-2007 à 08:59:53    

mais t'as fini de raconter n'importe quoi ?

Reply

Marsh Posté le 19-03-2007 à 09:34:54    

olalalala j'ai pas envie de m'énerver dès le matin......!!!
cela fait maintenant une semaine que je suis la dessus sans beaucoup avancer... si je vien ici c'est parce que j'ai besoin d'aide, je me tire les cheveux a tester tout et n'importe quoi pour essayer de comprendre.
  Après une semaine à tout tester j'essai d'élargir un peu l'eventail d'erreur possible et c'est pourquoi je poste ce genre de message.
  Si tu n'arrive pas a comprendre cela, dégage et emporte tes messages  avec toi....
  t'es vraiment un gros lourd, si t'as pas envie de m'aider mais t'a juste à ne pas poster, tu perd ton temps et le mien...
 
 Ensuite il y a obligatoirement des problèmes de compréhension étant donné que le serveur recoit la requête (la même que celle envoyé du tini ->base unix) mais ne l'execute pas .
  D'ailleurs il faut que je me deconnecte après l'envoi du message pour qu'il le prenne en compte sur le serveur, si j'en envoie plusieurs à la suite ou si je reste connecté... il ne prend rien...
  Si quelqu'un aurait une idée sur l'origine du problème, je lui serait reconnaissant de m'en faire part...

Message cité 1 fois
Message édité par aneurysm le 19-03-2007 à 09:36:48
Reply

Marsh Posté le 19-03-2007 à 09:53:25    

aneurysm a écrit :

t'es vraiment un gros lourd, si t'as pas envie de m'aider mais t'a juste à ne pas poster, tu perd ton temps et le mien...


Tu racontes les choses à moitié ou mal, personne peut t'aider dans ces conditions.  
De plus ton ton n'incite pas du tout à l'entraide.


---------------
Töp of the plöp
Reply

Marsh Posté le 19-03-2007 à 10:37:02    

Si le serveur mysql te renvoie une erreur , c'est qu'il ne comprend pas ce qu'il recoit. Ta requête SQL à l'air correcte (en admettant que ta table existe), peut-être cela vient de la convention de codage de caractère qu'accepte ton serveur SQL.

Reply

Marsh Posté le 19-03-2007 à 11:11:05    

Il y a un protocole à respecter pour communiquer avec MySQL, il suffit pas de faire un send("select * from tab;" )

Reply

Marsh Posté le 21-03-2007 à 08:22:17    

 Et di moi comment veut tu que je réponde autrement après un message pareil.
Je poste un message  ou j'avance une idée parce que je suis en pleine galère et on se permet de me répondre comme ca... je suis désolé mais je ne suis pas un clébard et si on ne me respecte pas (dans mon ignorance) alors je ne respecte pas non plus... Et il n'y a rien de plus normal, il m'aurait répondu comme j'ai posé les questions, jamais je n'aurai manqué de respect.
 
  "Tu racontes les choses à moitié ou mal, personne peut t'aider dans ces conditions."
  Effectivement c'est possible, malgré tout j'ai redétaillé autant que possible le post original, et si je racontes les choses a moitié ou mal c'est peut être parce que je ne peut pas en faire autrement.  
   
 Ensuite oui la table existe, je vais essayer d'y voir plus clair au niveau de la convention de codage de caractère.
 
 Et oui j'imagine qu'il y a un protocole a réspecter pour communiquer mais j'ai dit plus haut que le beck ne supportait pas Mysql alors il va sans doute (peut être) falloir que je me débrouille avec un simple send.  
merci

Reply

Marsh Posté le 21-03-2007 à 08:38:45    

aneurysm a écrit :

Et oui j'imagine qu'il y a un protocole a réspecter pour communiquer mais j'ai dit plus haut que le beck ne supportait pas Mysql alors il va sans doute (peut être) falloir que je me débrouille avec un simple send.
merci

bah on te dit que NON. Tu dois RTFM et réimplémenter le protocole réseau mysql.
Et je n'ai de toutes façons aucune idée de ce qu'est ce beck.

Message cité 1 fois
Message édité par Taz le 21-03-2007 à 08:40:08
Reply

Marsh Posté le 21-03-2007 à 08:46:34    

Taz a écrit :

bah on te dit que NON. Tu dois RTFM et réimplémenter le protocole réseau mysql.
Et je n'ai de toutes façons aucune idée de ce qu'est ce beck.


Un module embarqué.
 
http://www.gridconnect.com/beck-kits.html
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 21-03-2007 à 08:47:56    


bah je ne vois donc pas ce qui interdit d'y rajouter le support mysql.

Reply

Marsh Posté le 21-03-2007 à 09:31:59    

LOL et qu'est ce que je t'ai répondu??
Je t'ai repondu que NON on ne peut pas..................
Le module BECK ne peut pas prendre en charge Mysql

Reply

Marsh Posté le 21-03-2007 à 09:53:51    

aneurysm a écrit :

LOL et qu'est ce que je t'ai répondu??
Je t'ai repondu que NON on ne peut pas..................
Le module BECK ne peut pas prendre en charge Mysql


pourquoi ? tu crois que y a quoi dans libmysql si ce n'est des send et des recv ?

Reply

Marsh Posté le 21-03-2007 à 09:55:42    

J'y comprends rien à ton truc :??:
 
1- Le serveur mySQL, il tourne sur quelle machine : le module beck ou le pc distant ?
2- Même question pour le client que tu essaies d'implémenter.
3- Qu'est-ce qui t'empêche d'utiliser l'API C de mySQL (et j'aimerais bien avoir une vraie réponse, pas un "c'est pas possible" ) ?


---------------
TriScale innov
Reply

Marsh Posté le 21-03-2007 à 10:31:04    

okay  
1- Le serveur mysql tourne sur un pc distant avec sqlwrapper
2- Le client tourne sur l'OS du beck, une version allégée de DOS
3- tres honnetement je n'en sait rien, c'est mon prof qui m'a dit ca..

Reply

Marsh Posté le 21-03-2007 à 11:43:15    

tu devrais essayer d'utiliser l'API C quand même : comme dit Taz, c'est jamais qu'une bibliothèque qui encapsule proprement les send / recv pour toi, et implémente le protocole de communication avec MySQL.
 
Si ça marche pas, au moins tu sauras pourquoi.


---------------
TriScale innov
Reply

Marsh Posté le 22-03-2007 à 08:32:41    

j'en ai parlé avec mon prof et théoriquement le beck ne peut pas communiquer avec le protocole MySQL, en effet le beck ne dispose que d'une seule librairie (CLIB.H), auquel je peux quand meme rajouter les librairies de base, stdio.h, dos.h, le seul moyen serait de dévelloper un driver MySQL mais apparement ca serait le gros bordel et ca n'est carrement (CARREMENT) pas de mon niveau.

Reply

Marsh Posté le 22-03-2007 à 08:51:03    

aneurysm a écrit :

j'en ai parlé avec mon prof et théoriquement le beck ne peut pas communiquer avec le protocole MySQL, en effet le beck ne dispose que d'une seule librairie (CLIB.H), auquel je peux quand meme rajouter les librairies de base, stdio.h, dos.h, le seul moyen serait de dévelloper un driver MySQL mais apparement ca serait le gros bordel et ca n'est carrement (CARREMENT) pas de mon niveau.


Ben déjà tu devrais cesser de confondre 'librairie' (bibliothèque) et fichier d'en-tête...
 
http://mapage.noos.fr/emdel/notes.htm#bibliotheque
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 22-03-2007 à 09:12:18    

ah voui je m'exprime mal désolé
en tout cas je suis arrivé a envoyer la requête et à l'executer!
Le problème est qu'il faut que je me déconnecte pour que la requête s'execute...??
Autrement dit tout retour de valeur est impossible.
Si quelqu'un avait une idée?

Reply

Marsh Posté le 22-03-2007 à 09:40:03    

t'as lu ce genre de pages ?
http://lfe.developpez.com/BCBmySQL/


---------------
Töp of the plöp
Reply

Marsh Posté le 22-03-2007 à 09:45:11    

aneurysm a écrit :

j'en ai parlé avec mon prof et théoriquement le beck ne peut pas communiquer avec le protocole MySQL, en effet le beck ne dispose que d'une seule librairie (CLIB.H), auquel je peux quand meme rajouter les librairies de base, stdio.h, dos.h, le seul moyen serait de dévelloper un driver MySQL mais apparement ca serait le gros bordel et ca n'est carrement (CARREMENT) pas de mon niveau.


déjà y a confusion entre .h et biblitothèque.
ensuite je pense que le portage est plus facile que tout refaire de zéro, surtout sans lire la spécification avec une approche "j'ai qu'a send'er sur le port machin"

Reply

Marsh Posté le 22-03-2007 à 10:13:42    

Bin dans tout les cas je n'ai pas besoin de tout refaire à zéro étant donné que l'approche "j'ai qu'a send'er sur le port machin" a l'air de fonction en envoie. Je voudrai juste comprendre pourquoi je dois me déconnecter du socket pour qu'il execute la requête.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed