Rechercher : dans
Par :

C++ socket winsock2.h

Dernière réponse le 17 mai 2009 à 13:08:19 Flo, le 3 fév 2008 à 21:54:34 
 Signaler ce message aux modérateurs

Bonjour,
j'ai un problème avec l'utilisation de la bibliothèque winsock2.h.

Voici un aperçu de mon programme.

Dans un fichier interface.hpp j'ai une classe qui interface qui est implémentée dans le fichier interface.cpp
Elle permet l'affichage du menu principal de mon jeu et la gestion de l'interface. j'appelle les méthodes de la classe dans mon fichier main après avoir intancié un objet.
jusque là tout marchait.
le jeu étant multi-joueur j'ai du créer une partie cliente et une partie serveur à l'aide des sockets.
j'ai utilisé la bibliothèque winsock2.h. j'ai donc testé séparément du code précédent ma partie ciente et serveur.
tout a bien marché.
le problème est venu lorsque j'ai voulu rajouté ceci dans mon projet.
j'ai donc créé un fichier connexion.hpp avec une classe connexion implémentée dans un fichier connexion.cpp.
j'ai bien rajouté les bibliothèques nécessaires j'ai bien mis des ifndef #define au début de chaque header mais le problème vient lorsque j'inclus mon fichier connexion.hpp dans le fichier interface.cpp
dans une des méthodes de ma classe interface j'ai besoin d'appeler la méthode connexion serveur de ma classe connexion (en gros quand je clique sur un bouton de mon menu principal, la partie serveur se crée et affiche un texte si tout a bien marché) et là ca ne marche plus...
il me sort une erreur.
il me dit qu'il attend quelque chose dans ma "structure" et j'ai environ 12 erreurs, dont certaines sont un le manque d'un ; ou d'un signe.

Pour l'interface j'ai utilisé la SDL, et je code avec code block.
Désolé je n'ai pas le code entier je l'aurai demain si besoin est.

j'ai lu que la bibliothèque winsock2.h ne pouvai être incluse plusieurs fois sinon ca buggé, est-ce que ca peut venir de la ? pourtant je ne l'ai incluse que dans le connexion.hpp que j'inclus dans le interface.cpp.

Configuration: Mac OS X
Safari 1.3

Meilleures réponses pour « C++ socket winsock2.h » dans :
Les piles en langage C VoirLes piles Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la pile IV. Opérations sur les piles A. Initialisation B. Insertion d'un élément dans la pile C. Ôter un élément de la pile D. Affichage...
Enlever ventirad socket A VoirProblème Je n'arrive pas à enlever le ventirad de mon processeur socket A. Solution Il y a un crochet sur un côté. Il faut appuyer avec le bout d'un tournevis plat, par exemple, sur le crochet pour le libérer. Merci à epango sur le forum...
Les fonctions de l'API Socket VoirLes fonctions des sockets en détail La fonction socket() La création d'un socket se fait grâce à la fonction socket() : int socket(famille,type,protocole) famille représente la famille de protocole utilisé (AF_INET pour TCP/IP utilisant une...
Programmation réseau - Les sockets VoirIntroduction aux sockets La notion de sockets a été introduite dans les distributions de Berkeley (un fameux système de type UNIX, dont beaucoup de distributions actuelles utilisent des morceaux de code), c'est la raison pour laquelle on parle...
DNS (Système de noms de domaine) VoirQu'appelle-t-on DNS ? Chaque ordinateur directement connecté à internet possède au moins une adresse IP propre. Cependant, les utilisateurs ne veulent pas travailler avec des adresses numériques du genre 194.153.205.26 mais avec un nom de domaine...

1

Flo, le 4 fév 2008 à 08:50:12

Up...

Répondre à Flo

2

Flo, le 4 fév 2008 à 08:54:23

Voila les messages d'erreur

interface.cpp:12: error: expected identifier before "struct"
interface.cpp:12: error: expected identifier before '(' token
interface.cpp:12: error: expected unqualified-id before ')' token
interface.cpp:13: error: expected `,' or `;' before '{' token
interface.cpp:22: error: expected identifier before '~' token
interface.cpp:22: error: expected class-name before "struct"
interface.cpp:22: error: expected `,' or `;' before "struct"
interface.cpp:29: error: expected type-name
interface.cpp:29: error: expected unqualified-id before ')' token
interface.cpp:30: error: expected `,' or `;' before '{' token
interface.cpp:105: error: expected type-name
interface.cpp:105: error: expected unqualified-id before ')' token
interface.cpp:106: error: expected `,' or `;' before '{' token
interface.cpp:130: error: expected type-name
interface.cpp:130: error: expected unqualified-id before ')' token
interface.cpp:131: error: expected `,' or `;' before '{' token
Process terminated with status 1 (0 minutes, 2 seconds)

Répondre à Flo

3

Char Snipeur, le 4 fév 2008 à 08:55:26

Houla, pas simple ton problème...
j'ai lu que la bibliothèque winsock2.h ne pouvai être incluse plusieurs fois sinon ca buggé, est-ce que ca peut venir de la ?
C'est con ça, remarque avec windows ça m'étonnerai pas.
Tout ce que tu nous dit n'est pas très clair. Tu as un problème à la compilation ou à l'éxecution ?
Le mieux serai de mettre le bout de code qui merde ainsi que les erreurs produite.
Salutation ! Quand on sait pas, on touche pas !JBT
Char Snipeur

Répondre à Char Snipeur

4

Flo, le 4 fév 2008 à 09:22:55

Salut, oui je sais c'est pas simple à expliquer, meme mon prof a pas trouvé .. hum hum.
Mon problème est à la compilation. voici le code (j'enleve quelques implémentations du code pour alléger la page)
Fichier reseau.hpp

#ifndef __Reseau__
#define __Reseau__
#include <winsock2.h>
#include <sys/types.h>

class reseau
{
public:
reseau();
~reseau();
void connexion_serveur();
void connexion_client();


private:

SOCKET sock;
SOCKADDR_IN sin;

};
#endif


Fichier reseau.cpp

#include <sys/types.h>
#include <iostream>
#include "reseau.hpp"


reseau::reseau()
{

}

reseau::~reseau()
{
}


void reseau::connexion_serveur()
{
//j'ai enlevé l'implémentation qui fonctionne dans un projet à part
}




void reseau::connexion_client()
{
idem
}

Fichier interface.hpp

#ifndef __Interface__
#define __Interface__
#include <SDL/SDL.h>
#include <string>


class interface
{

public:

interface();
~interface();
void menu_principal();
void config_partie();
void rejoindrePartie();

private:

SDL_Surface *ecran; //c'est la surface principale qui délimite la taille de la fenêtre
SDL_Surface *imageDeFond; // image de fond
SDL_Surface *creer; //bouton créer
SDL_Surface *rejoindre; // bouton rejoindre



};

#endif




Fichier interface.cpp

#include <SDL/SDL.h>
#include <string>
#include "interface.hpp"
#include "reseau.hpp" // je rajoute cette ligne et j'ai les messages d'erreur cités plus haut





void texture(int x, int y, SDL_Surface *source, SDL_Surface *destination);

interface::interface()
{

SDL_Surface *ecran= NULL;
SDL_Surface *imageDeFond = NULL;
SDL_Surface *creer = NULL;
SDL_Surface *rejoindre= NULL;

}

interface::~interface()
{

}



void interface::menu_principal()
{


}


void interface::config_partie()
{

}



void interface::rejoindrePartie()
{


}

//la fonction qui place les surfaces
void texture(int x, int y, SDL_Surface *source, SDL_Surface *destination)
{

}

Répondre à Flo

5

Flo, le 4 fév 2008 à 10:15:36

En rajoutant <winsock2.h> dans le fichier reseau.cpp ca marche... je comprends pas tout

Répondre à Flo

6

Flo, le 4 fév 2008 à 10:46:09

Non en fait ce ne marche pas j'ai parlé trop vite, bon je sais pas quoi faire je suis perdu

Répondre à Flo

7

Flo, le 4 fév 2008 à 11:38:40

Bon j'ai trouvé j'ai honte tellement c'est nul...
Résolu

Répondre à Flo

8

sandremanuel, le 12 mai 2008 à 09:23:18

C etait quoi la probleme?

Répondre à sandremanuel

9

 Chaussette, le 17 mai 2009 à 13:08:19

Oui c'etais quoi? j'ai le meme soucis

Répondre à Chaussette
Collection CommentÇaMarche.net