#0 

02-05-2007 17:58:00

MABB
Membre
Date d'inscription: 02-11-2006
Messages: 11

Bonjour

Je ssuis nouveau avec RakNet et un peu moins en C++ mais j'ai une erreur C++

J'essaie d'avoir une classe avec une propriété RakServerInterface *.

Mais j'ai une erreur à l'initialisation. La propriété server n'est pas définie.

Je suis parti du Chat example.

Voisi mes fichiers :

MyServer.h

Code:

#include "PacketEnumerations.h"
#include "RakNetworkFactory.h"
#include "RakServerInterface.h"
#include "NetworkTypes.h"
#include "BitStream.h"
#include <assert.h>
#include <cstdio>
#include <cstring>
#include <stdlib.h>
#include <conio.h>
#include <windows.h> // Sleep

class CMyServer
{
public:
       CMyServer(void);
       RakServerInterface * server;
public:
      virtual ~CMyServer(void);
}

MyServer.cpp

Code:

#include "MyServer.h"

CMyServer::CMyServer(void)
{
    RakServerInterface * server = RakNetworkFactory::GetRakServerInterface(); //::GetRakServerInterface();

    server->InitializeSecurity(0,0);
    int i = server->GetNumberOfAddresses();
    server->SetPassword("Socrate");
    
    // Record the first client that connects to us so we can pass it to the ping function
    PlayerID clientID=UNASSIGNED_PLAYER_ID;

    // A server
    puts("Enter the server port to listen on");
    gets(portstring);
    if (portstring[0]==0)
        strcpy(portstring, "10000");
    puts("Enter the server name  (up to 40 characters)");
    gets(enumerationDataStruct.serverName);
    if (enumerationDataStruct.serverName[0]==0)
        strcpy(enumerationDataStruct.serverName, "Default server name");
    puts("Enter the server message of the day  (up to 50 characters)");
    gets(enumerationDataStruct.MOTD);
    if (enumerationDataStruct.MOTD[0]==0)
        strcpy(enumerationDataStruct.MOTD, "Default MOTD");
    // Note this passes by value, because otherwise people could get access
    // to and damage our internal data
    server->SetStaticServerData((char*)&enumerationDataStruct, sizeof(EnumerationDataStruct));
    puts("Starting server.");
}

CMyServer::~CMyServer(void)
{
}

And my main file :

main.cpp

Code:

#include "PacketEnumerations.h"
#include "RakNetworkFactory.h"
#include "RakServerInterface.h"
#include "NetworkTypes.h"
#include "BitStream.h"
#include <assert.h>
#include <cstdio>
#include <cstring>
#include <stdlib.h>
#include <conio.h>
#include <windows.h> // Sleep

#pragma comment(lib, "RakNetDLL.lib") 

int main (void) {
  CMyServer* aServer = new CMyServer();  // OK but aServer->server not defined
 bool b = aServer->server->Start(32, 0, 30, atoi(aServer->portstring));
    if (b)
        puts("Server started, waiting for connections.");
    else
    { 
        puts("Server failed to start.  Terminating.");
        exit(1);
    }
}

L'erreur est à  aServer->server->Start  où  aServer->server n'est pas défini

Pourriez-vous m'aider svp?

Hors ligne


#1 

08-05-2007 21:06:08

dark calculator
Abonné
Date d'inscription: 25-02-2007
Messages: 153

salut


Je suis pas un expert mais le probleme vient surement du fait que tu redeclare server dans le constructeur donc il est limite a la portée

voila

a +
dark calculator

Dernière modification par dark calculator (08-05-2007 21:06:51)

Hors ligne


#2 

09-05-2007 22:00:30

Jerry Kan
Habitué
Date d'inscription: 21-11-2006
Messages: 265

MABB :

Je suis nouveau avec RakNet et un peu moins en C++ mais j'ai une erreur C++


Salut,

bon, je sais pas pourquoi ton programme plante, mais j'aimerai bien lancer le débat sur Raknet
Pourquoi ce choix ?
A mes yeux Raknet a beaucoup de points négatifs :
1 - ce n'est pas libre, ..
2 - c'est pas gratuit
3 - c'est de l'udp, j'imagine qu'un jeu s'apparente a du streaming (pour lequel ca ne sert a rien de réémettre un paquet qui arrive trop tard) mais pouvoir aussi fonctionner en tcp me parait un plus

Alors, pourquoi Raknet ?
j'attends vos points positifs wink



ps : vive les troll !

Hors ligne


#3 

10-05-2007 00:06:56

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

Moi je sais pour l'udp au moins big_smile.
C'est surtout que l'udp est très nettement plus rapide que le tcp, son seul inconvénient est qu'il ne garanti pas l'arrivé des paquets.
Donc si tu veux faire un jeux de course en tcp tu vas vite être embété pour gérer le delai que t'aurra entre le moment ou le paquet a été envoyé et le moment ou le paquet sera reçu (on appele ça la latence pour ceux qui savent pas).
Raknet c'est gratuit à condition de ne pas commercialiser son produit.
Et ensuite il me semble si je dis pas de connerie que raknet s'occupe justement du temps de latence pour les paquets.
Voilou @++ ^^


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#4 

10-05-2007 08:13:14

Jerry Kan
Habitué
Date d'inscription: 21-11-2006
Messages: 265

Copland :

Moi je sais pour l'udp au moins big_smile.
C'est surtout que l'udp est très nettement plus rapide que le tcp, son seul inconvénient est qu'il ne garanti pas l'arrivé des paquets.


oui c'est pour ca que je parle de streaming dans mon post, c'est un peu la meme technique, mais tant qu'a utiliser une lib, j'aime autant qu'elle fasse les deux, non ? par exemple pour un chargement de map, un trasfert de données ou autre, c'est bcp mieux

Copland :

Raknet c'est gratuit à condition de ne pas commercialiser son produit.


ben justement pourquoi implanter une telle limitation a la base du projet ?

Hors ligne


#5 

10-05-2007 09:14:39

MABB
Membre
Date d'inscription: 02-11-2006
Messages: 11

@ dark calculator : oui effectivement mon serveur est à porté limité. J'ai résolu le problème en l'initialisant un peu plus tard hors du constructeur.

@ Jerry Kan : j'ai choisi RakNet pour les raisons évoquées par Copland. L' udp pour la plus part des MMO est de rigeur. RakNet est assez simple de prose en main et pas forcément très cher pour un produit commercial (ce qui n'est pas d'actualité pour mon jeu). De plus faire son propre serveur est long. Et puis avec l'udp il y a toujours moyen de savoir si les messages ont été reçu et sinon de recommencer jusqu'à ce que.

Hors ligne


#6 

21-09-2008 14:42:01

cricri631
Petit nouveau
Date d'inscription: 21-09-2008
Messages: 1

salut a tous

moi j'ai trois soucis 2 avec rackent et 1 autre avec la fusion des class avec irrlicht

mon probléme de fusion  est que j'ai créé un bouton avec irrlicht et dans une class mais la partie qui construit le bouton je l'est mis das une méthode que j'appel en dehort de la boucle et la partie qui créé l'événement dans une autre méthode pour ellle l'appelé dans la boucle mais le probléme c'est que  j'ai bien le bouton je peut clicket dessus mais aucun événement ne se passe alor que quand je programme en  un seul fichier cpp (main.cpp) sa marche

mes deux probléme avec raknet sont

1) quand je programme en seul fichier et que je créé le bouton que je vous parlé plus haut l'événement est d'envoyé 3 paquet mais seulement 2 arrive

2)pouvez vous me dire comment envoyé une chaine de caractére du serveur au client svp car la je séche

dans l'atente de votre aide je vous souhaite une bonne journée

chris

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
Analysé par
880 membres
1424 sujets
11113 messages
Dernier membre inscrit: mandrifidy
14 invités en ligne
Aucun membre connecté
RSS Feed