connection socket [RESOLU] - C - Programmation
Marsh Posté le 15-03-2007 à 11:07:30
ReplyMarsh 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 ?
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
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.
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
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 |
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?
Marsh Posté le 15-03-2007 à 17:23:42
j'y peux quoi si t'es atteint de NIH
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... |
T'as dit tout ça avant c'est vrai ??
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...
Marsh Posté le 16-03-2007 à 18:56:45
aneurysm a écrit : Voici la fonction d'envoie : |
int send(int s, const void *msg, size_t len, int flags); |
Marsh Posté le 16-03-2007 à 19:36:19
Emmanuel Delahaye 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.
Trop trop fort...
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. |
aneurysm a écrit : Message édité par aneurysm le 16-03-2007 à 14:07:44 |
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".
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.
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?
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...
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.
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.
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;" )
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
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. |
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.
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. |
Un module embarqué.
http://www.gridconnect.com/beck-kits.html
Marsh Posté le 21-03-2007 à 08:47:56
Emmanuel Delahaye a écrit : Un module embarqué. |
bah je ne vois donc pas ce qui interdit d'y rajouter le support mysql.
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
Marsh Posté le 21-03-2007 à 09:53:51
aneurysm a écrit : LOL et qu'est ce que je t'ai répondu?? |
pourquoi ? tu crois que y a quoi dans libmysql si ce n'est des send et des recv ?
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" ) ?
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..
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.
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.
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
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?
Marsh Posté le 22-03-2007 à 09:40:03
ReplyMarsh 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"
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.
Marsh Posté le 15-03-2007 à 10:36:22
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 édité par aneurysm le 29-03-2007 à 17:13:42