begin process at 2012 05 29 02:02:34
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Réseau / Internet

 > 

comment evoyer des entiers par les sockets


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

comment evoyer des entiers par les sockets

samedi 14 février 2004 à 16:32:54 | comment evoyer des entiers par les sockets

JRB


je n'arrive pas à envoyer des variables declarees integer par socket.
j'utilise :

int nResult = m_ClientSocket[0].Send(LPCTSTR(strTemp), nSize);


strTemp est declare en char mais si je la remplace par une variable int cela cree une erreur.
j'ai le meme probleme pour la reception.
quelqu'un pourrait me dire quelle est la solution à utiliser.
samedi 14 février 2004 à 17:09:21 | Re : comment evoyer des entiers par les sockets

cosmobob

ben envoie la chaine de caracteres associée a ton entier
itoa(ton_entier,buffer,10) pour convertir un entier en sa chaine de caractere en base 10. prevoit un buffer assez grand juste :p (de taille 12 ca suffit...). ca a fait une erreur car strTemp etant censé etre un pointeur vers une chaine de caracteres, si a la place tu mets un entier, ben lors de l'execution le programme va chercher ds la zone memoire dont l'adresse est l'entier ke t'as mis, et celle la a priori ya peu de chances k'elle soit valide
samedi 14 février 2004 à 17:28:55 | Re : comment evoyer des entiers par les sockets

vecchio56

Administrateur CodeS-SourceS
peut-être comme ca?

int n;
int nResult = m_ClientSocket[0].Send(&n, sizeof(n));
samedi 14 février 2004 à 21:00:20 | Re : comment evoyer des entiers par les sockets

JRB


merci de vos reponses;
en ce qui concerne ton message Cosmobob j'ai ecrit :


int n = 1;
strTemp = itoa(n,12,10);
int nSize = strTemp.GetLength();

// Envoyer la chaîne
int nResult = m_ClientSocket[0].Send(LPCTSTR(strTemp), nSize);


en compilant j'ai une erreur :

error C2664: 'itoa' : cannot convert parameter 2 from 'const int' to 'char *'

c'est une erreur que j'ai deja eu lors de mes precedents essais et je n'ai jamais reussis a la solutionner, as tu une idee ?

pour ta reponse Vecchio56, sa marche bien(au point de vu de la transmission) mais la conversion se passe mal : genre le 1 se transforme en Î.
j'avais utiliser une methode similaire pour transformer les int en char mais j'avais aboutit sur le meme probleme.

je pense que si tu pouvais m'eclairer sur ta solution Cosmobob et me donner une solution le resultat devrait etre convaincant.
merci encore pour votre aide.
dimanche 15 février 2004 à 00:29:12 | Re : comment evoyer des entiers par les sockets

cosmobob


buffer ca doit etre un pointeur vers un char. genre tu declare avant char buffer[12];
itoa(n,buffer,10); (la ds buffer t'as la chaine de caracteres "12", et tu peux l'envoyer avec ton send.)
note ke si tu fé strTemp = itoa(n,buffer,10);
et ke tu changes buffer plus tard genre si tu fé strcpy(buffer,"48"); ben ton strTemp il pointera vers la chaine "48"

sinon pour faire plus simple des le debut, (cad que tu veux toujours envoyer 1 comme entier), il suffisait de faire strcpy(strTemp,"1"); et la tenvoies le truc ds le send

ou alors si n peut changer, fais directement :

itoa(n,strTemp,10); //place la chaine "1" (si n vaut 1...) dans strTemp

int nSize = strTemp.GetLength();

// Envoyer la chaîne
int nResult = m_ClientSocket[0].Send(LPCTSTR(strTemp), nSize);

et voila... tu feras plus des erreurs comme ca qd t'auras a peu pres pigé les pointeurs.
a++
dimanche 15 février 2004 à 20:36:34 | Re : comment evoyer des entiers par les sockets

JRB

sa n'a pas marche du premier coup mais je viens de reussir a convertir des entiers et a les envoyer.
il faut penser a ne pas envoyer buffer car c'est un tableau et que sa plante lorsque on laisse :

int nSize = buffer.GetLength();

j'ai tout simplement rajoute la ligne :

CString strTemp = buffer;

et apres on cherche la taille de strTemp.

je pense que sa aurait aussi marche si j'avais remplace :

int nResult = m_ClientSocket[0].Send(LPCTSTR(strTemp), nSize);

par

int nResult = m_ClientSocket[0].Send(LPCTSTR(buffer), 12);

la je peux pas dire je n'ai pas teste cette solution.

sinon j'aimerais une petite precision quand tu dis :

buffer ca doit etre un pointeur vers un char. genre tu declare avant char buffer[12];


je connais pas trop les pointeurs mais je suis surpris quand tu en parles, si tu declares char xxxx, c'est une variable de caractere normal pas un pointeur qui me semble sont toujours caracterises par une etoile qui les precede.
pourrais tu m'eclairer sur cette petite imprecision s'il te plait.

sinon merci a tous pour votre aide qui m'a ete tres precieuse et qui m'a beaucoup apporte.
lundi 16 février 2004 à 12:21:58 | Re : comment evoyer des entiers par les sockets

cosmobob


ouais normalement les pointeurs sont déclarés avec un * devant, mais si tu déclares char buffer[12], buffer est un pointeur vers la premiere case du tableau (cad ke buffer == &buffer[0] ...)
en gros pour avoir des pointeurs soit lors de la déclaration ya un * devant, soit tas déclaré un tableau d'objets et la c'est automatiquement un pointeur vers la 1ere case du tableau.

"int tableau[10]", tableau est du type int* car tableau désigne l'adresse de la premiere case

voila...
lundi 16 février 2004 à 21:23:28 | Re : comment evoyer des entiers par les sockets

JRB


ok merci bien.
samedi 21 février 2004 à 16:04:50 | Re : comment evoyer des entiers par les sockets

JRB


est ce que tu connaitrais la commande qui permet d'inverser le truck. c'est a dire de passer les char converti en int.
car a la base c'est des entiers et il faut que je les retrouves a la sortie.
mardi 2 mars 2004 à 12:28:42 | Re : comment evoyer des entiers par les sockets

cosmobob

int atoi(char* ). convertit une chaine de caracteres en entier.

1 2

Cette discussion est classée dans : entiers, code, int, sockets, evoyer


Répondre à ce message

Sujets en rapport avec ce message

Prob avec "!" [ par saturne_1606 ] Bonjour a tous!Voila, mon prob est que g créer une classe qui permet de manipuler des ensembles d'entier. Et là, g une fonction membre qui vérifie si Utilisation DLL SANS .lib [ par nasedo47 ] J'ai récupéré une DLL sur un site ainsi qu'une page avec les prototypes de toutes les fonctions contenues dans cette DLL.J'aimerais utiliser ces fonct fonction apply / template [ par pointejb ] Bonjour à tous,Je cherche un moyen d'implémenter une fonction de type 'apply' qui prendrait en parametres une fonction et ses arguments et qui aurait pb code [ par rafffel ] voici le code je veux cree une boucle infini qui rempli tout l'ecran de nombre mais le prob c que ds le code ci dessous il y a en bas un demi ligne qu Difference [ par xionoxid ] C'est koi la difference entre time (0) et time (NULL) les 2 font des nbr aleatoire !??#include #include #i Pointeur [ par casafa ] Bonjour tlm,Je suis débutant et je comprend à quoi sert les pointeurs...Quel est la différence entre ces 2 exemples, qu'est ce que le premier à en plu Erreur [ par LordBob ] Salut a tous,voila je voudrait faire un truc, mais je n'y arrive pas. Alors plutot que de vous expliquez ce que c'est, je vous montre le code.#include Lots de questions [ par Arkko ] J'ai quelque question et pour mieux les expliquer regarder le code si-dessousclass Rationnel{ private: int numerateur; int denominate retour à la ligne [ par msoin ] 'jour, je debute en c++ et je fais quelques petits programmes pour voir comment ça marche.en l'occurence, celui ci:int main(){int loopcount;cout &lt "désallocation" inopinée [ par vecchio56 ] J'ai touvé un truc bizarre avec Visual C++ 6: le code suivant plante:#include void f(char* a){ a = new char[100]; // alloue de la


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,827 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales