RECHERCHER :
COMMUNAUTE MP
Identifiez vous ...
Devenir Membre
J'ai oublié mon MDP
DOMAINE MP
Bavardages
Langages Généraux
Langages Web
Langages DotNet
Autres langages
Dev. Jeux Video
Sécurité
Sys. Exploitation
Graphismes
Logiciels
Réseaux
Bases de données
Méthodologies
Emplois High-tech
Aide juridique
Articles juridiques
FORUM
Index des forums
Ajouter un sujet
Rechercher sujet
Contact Responsable
Devenir modérateur
CHAT MP IRC
Votre pseudo ...
Serv: irc.irc-land.org
Chan: #MoteurProg
PARTICIPER
Plus de 3500 emplois.
Rechercher un job
Déposez votre CV
Emplois High-tech

Visiteur MP

 Socket

Forum : IDE C++ - BORLAND C++
Sous Catégorie : Borland C++
Type du sujet : Sujet Normale
FAQ : FAQ IDE C++ - BORLAND C++

SUIVI DES SUJETS PAR MAIL

SUIVI PAR MAIL INACTIF

RESOLUTION DU SUJET SUJET NON RESOLU
BLOQUAGE DU SUJET SUJET ACTIF
APPARTENANCE A LA FAQ N'APPARTIENT PAS A LA FAQ


PAGES : [1] [2]

POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

FORUM IDE C++ - BORLAND C++

PREMIERE PAGE

PAGE PRECEDENTE

Page précedente

Page suivante

PAGE SUIVANTE

DERNIERE PAGE
stealther
Nouveau membre
Inscrit : 07/11/2004
Messages : 6
Message
#41796
Posté le 07/11/04 à 18:41
Salut à tous!!!
Moi j'ai un probleme avec les sockets!!!
Je commence tous juste à apprendre comment fonctionne les sockets, quand je veux compiler un prog qui utilise les sockets, j'obtient ces résultats :
avec dev c++ 4.9.9.0 :

In function `main':
15 : `sockaddr_in' undeclared (first use in this function)
(Each undeclared identifier is reported only once
for each function it appears in.)
15 : parse error before "adresse_socket"
28 : `adresse_socket' undeclared (first use in this function)

avec dev c++.4 :

15 : `sockaddr_in' undeclared (first use in this function)
15 : (Each undeclared identifier is reported only once
15 : for each function it appears in.)
15 : parse error before `adresse_socket'
28 : `adresse_socket' undeclared (first use in this function)

Voici le code que j'ai voulu compiler :


#include <stdio.h> #include <string.h> #include <winsock.h> #include <unistd.h> #pragma comment(lib,"ws2_32.lib") int main(int argc, char* argv[]) { WSADATA wsaData; int res,my_socket,port; char *adresse = "127.0.0.1"; sockaddr_in adresse_socket; int receive, envoie, total_rcv = 0; char *chaine; char Buffer[64]; if((res = WSAStartup(MAKEWORD(2,0), &wsaData)) != 0) printf("Impossible d'initialiser l'API Winsock 2.0\n"); if((my_socket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==INVALID_SOCKET) printf("Echec de création de la socket !\n"); memset(&adresse_socket,0x0,sizeof(adresse_socket)); adresse_socket.sin_family = AF_INET; adresse_socket.sin_port = htons(port); adresse_socket.sin_addr.S_un.S_addr = inet_addr(adresse); if((res = connect(my_socket,(struct sockaddr *) &adresse_socket, sizeof(adresse_socket))) != 0) printf("Impossible de se connecter !\n"); if(send(my_socket,chaine,strlen(chaine),0) != strlen(chaine)) printf("Echec de l'envoie des données !\n"); while(total_rcv < strlen(chaine)) { if((receive = recv(my_socket,Buffer,63,0)) <= 0) printf("Echec de reception des donnees !\n"); total_rcv += receive; Buffer[total_rcv] = '\0'; printf(Buffer); } return 0; }


A chaque fois que je souhaite compiler un prog qui utilise les sockets, ce sont les meme érreur qui reviennent, ces erreur correspondent aux lignes :

sockaddr_in adresse_socket;
et
memset(&adresse_socket,0x0,sizeof(adresse_socket));

Que doit-je faire?

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Publicité
Inscrit : X
Messages : X
Message
#Aucun

HAUT DE PAGE

  

pac
Co-Administrateur
Superviseur :
- Méthodologie.
Modérateur :
- Delphi
Chef de projet(s) :
- Jeu Awalé
- EcoSystem
- MySudoku

Avatar de pac
Inscrit : 08/04/2004
Messages : 6571
Message
#41812
Posté le 07/11/04 à 19:20
Tu dois vérifier que sockaddr_in se trouve bien dans les librairies que tu inclus.
Il faut que tu vérifies si tu le trouve si sa syntaxe est exactement la même (majuscule et minuscule), car DevC++ ne trouve pas ce type.
__________________________
Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
N'oubliez pas le Tag [Résolu]Image.

Initiez-vous à Delphi avec Turbo Delphi Explorer, au C ou au C++ avec Code::Blocks et C# avec Visual C# 2005 Express.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE ALLER VOIR SON SITE

stealther
Nouveau membre
Inscrit : 07/11/2004
Messages : 6
Message
#41839
Posté le 07/11/04 à 21:36
sockadr_in se trouve bien dans la librairie winsock2.h, et la syntaxe est la même!!!

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

pac
Co-Administrateur
Superviseur :
- Méthodologie.
Modérateur :
- Delphi
Chef de projet(s) :
- Jeu Awalé
- EcoSystem
- MySudoku

Avatar de pac
Inscrit : 08/04/2004
Messages : 6571
Message
#41843
Posté le 07/11/04 à 21:51
Il faut donc que tu inclues winshock2.h et non pas winshok.h

[quote]char *adresse = "127.0.0.1";[/quote]
Je te conseille de faire, la délcaration, puis après l'affectation, soit en statique, soit en dynamique mais pas directement comme ça.

Par exemple en statique :
[code]char adresse[16];
strcpy(adresse,"127.0.0.1");[/code]
Soit en dynamique :
[code]char* adresse = new char[16];
strcpy(adresse,"127.0.0.1");[/code]
__________________________
Lisez la [url=http://www.forum.moteurprog.com/bavardages/forum-msg-22857-1.htm]charte[/url], pensez à regarder la [url=http://www.forum.moteurprog.com/FAQ/FAQ.php]FAQ[/url], les [url=http://www.moteurprog.com/Tutoriaux/]tutoriaux[/url], l'[url=http://www.moteurprog.com/Annuaire/]annuaire[/url] et faites une [url=http://www.forum.moteurprog.com/Rechercher/Index.php]recherche[/url] dans les forums.
N'oubliez pas le Tag [b][Résolu][/b][img]http://www.ressources.moteurprog.com//Ressources/Images/Forum/Resolu.gif[/img].

Initiez-vous à Delphi avec [url=http://www.turboexplorer.com/delphi]Turbo Delphi Explorer[/url], au C ou au C++ avec [url=http://www.codeblocks.org]Code::Blocks[/url] et C# avec [url=http://www.microsoft.com/france/msdn/vstudio/express/vcsharp/telechargez.mspx]Visual C# 2005 Express[/url].

ERREUR BBCODE SUR CE MESSAGE :
- La valeur de la balise "quote" n'est pas correcte !

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE ALLER VOIR SON SITE

stealther
Nouveau membre
Inscrit : 07/11/2004
Messages : 6
Message
#41963
Posté le 08/11/04 à 19:59
J'ai fait tous les changements que tu m'as dit, avec dev c++ 4.9.9.0, j'ai toujours plein d'erreurs, mais avec dev c++ 4 j'ai plus qu'une erreur :
3 : C:\DEV-C_~1\Include\winsock2.h:46: unbalanced `#endif'

ce qui correspond à la ligne :

#include <winsock2.h>

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

pac
Co-Administrateur
Superviseur :
- Méthodologie.
Modérateur :
- Delphi
Chef de projet(s) :
- Jeu Awalé
- EcoSystem
- MySudoku

Avatar de pac
Inscrit : 08/04/2004
Messages : 6571
Message
#41973
Posté le 08/11/04 à 20:36
Hum, ce n'est pas bon signe. Apparement, il se pourrait qu'il y ait une erreur dans winsock2.h
Ouvres le pour voir et cherche #endif en fin de fichier.
S'il n'y est pas, rajoute le.

Montres aussi le début de ton code pour voir.

Dans winsock2.h, il faut qu'il fasse au départ, #ifndef TRUC_H
#define TRUC_H
....

#endif.

Montres pour voir le début et la fin de ce fichier aussi pour voir.
__________________________
Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
N'oubliez pas le Tag [Résolu]Image.

Initiez-vous à Delphi avec Turbo Delphi Explorer, au C ou au C++ avec Code::Blocks et C# avec Visual C# 2005 Express.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE ALLER VOIR SON SITE

pac
Co-Administrateur
Superviseur :
- Méthodologie.
Modérateur :
- Delphi
Chef de projet(s) :
- Jeu Awalé
- EcoSystem
- MySudoku

Avatar de pac
Inscrit : 08/04/2004
Messages : 6571
Message
#41977
Posté le 08/11/04 à 20:44
Bien, en fait, j'ai retrouvé le fichier et il faut avouer qu'il n'est pas facile de compter le nombre de #endif et de #ifndef et #ifdef.

Montre toujours le début de ton code pour voir.
__________________________
Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
N'oubliez pas le Tag [Résolu]Image.

Initiez-vous à Delphi avec Turbo Delphi Explorer, au C ou au C++ avec Code::Blocks et C# avec Visual C# 2005 Express.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE ALLER VOIR SON SITE

stealther
Nouveau membre
Inscrit : 07/11/2004
Messages : 6
Message
#42073
Posté le 09/11/04 à 18:28
Voici le code :


#include <stdio.h> #include <string.h> #include <winsock2.h> #pragma comment(lib,"ws2_32.lib") int main(int argc, char* argv[]) { WSADATA wsaData; int res,my_socket,port; char adresse[16]; strcpy(adresse, "127.0.0.1"); sockaddr_in adresse_socket; int receive, envoie, total_rcv = 0; char *chaine; char Buffer[64]; if((res = WSAStartup(MAKEWORD(2,0), &wsaData)) != 0) printf("Impossible d'initialiser l'API Winsock 2.0\n"); if((my_socket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==INVALID_SOCKET) printf("Echec de création de la socket !\n"); memset(&adresse_socket,0x0,sizeof(adresse_socket)); adresse_socket.sin_family = AF_INET; adresse_socket.sin_port = htons(port); adresse_socket.sin_addr.S_un.S_addr = inet_addr(adresse); if((res = connect(my_socket,(struct sockaddr *) &adresse_socket, sizeof(adresse_socket))) != 0) printf("Impossible de se connecter !\n"); if(send(my_socket,chaine,strlen(chaine),0) != strlen(chaine)) printf("Echec de l'envoie des données !\n"); while(total_rcv < strlen(chaine)) { if((receive = recv(my_socket,Buffer,63,0)) <= 0) printf("Echec de reception des donnees !\n"); total_rcv += receive; Buffer[total_rcv] = '\0'; printf(Buffer); } return 0; }


Je l'ai remis entierement, je ne sais pas jusqu'ou ça t'intéresse! Smiley

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

pac
Co-Administrateur
Superviseur :
- Méthodologie.
Modérateur :
- Delphi
Chef de projet(s) :
- Jeu Awalé
- EcoSystem
- MySudoku

Avatar de pac
Inscrit : 08/04/2004
Messages : 6571
Message
#42088
Posté le 09/11/04 à 19:54
Désolé, mais je ne vois pas de problème dans le code, s'il vient effectivement de winshock2.h, il n'y a pas grand chose à faire.
__________________________
Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
N'oubliez pas le Tag [Résolu]Image.

Initiez-vous à Delphi avec Turbo Delphi Explorer, au C ou au C++ avec Code::Blocks et C# avec Visual C# 2005 Express.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE ALLER VOIR SON SITE

stealther
Nouveau membre
Inscrit : 07/11/2004
Messages : 6
Message
#42351
Posté le 11/11/04 à 13:19
La seul solution est de changer de compilateur, c'est ça?

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 
POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

PREMIERE PAGE

PAGE PRECEDENTE Page précédente

Page suivante

PAGE SUIVANTE DERNIERE PAGE

FORUM IDE C++ - BORLAND C++



    PAGES : [1] [2]



.: Site Web développé par Julien Pichot et l'équipe MPWG avec www.evolvia-web.com :.