#1 

02-05-2007 15:58:00

MABB
Membres
Date d'inscription:
Messages: 11
IP: 87.90.87.14
Courriel

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

#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
#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
#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


#2 

08-05-2007 19:06:08

dark calculator
Membres
Date d'inscription:
Messages: 153
IP: 81.67.143.94
Courriel

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


Hors ligne


#3 

09-05-2007 20:00:30

Jerry Kan
Membres
Date d'inscription:
Messages: 265
IP: 82.243.77.149
Courriel

MABB Ecris:

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


#4 

09-05-2007 22:06:56

Copland
Modérateurs
Date d'inscription:
Messages: 657
IP: 90.5.234.220
Courriel  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


#5 

10-05-2007 06:13:14

Jerry Kan
Membres
Date d'inscription:
Messages: 265
IP: 139.124.21.218
Courriel

Copland Ecris:

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 Ecris:

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


#6 

10-05-2007 07:14:39

MABB
Membres
Date d'inscription:
Messages: 11
IP: 87.90.87.14
Courriel

@ 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


#7 

21-09-2008 12:42:01

cricri631
Membres
Date d'inscription:
Messages: 1
IP: 90.5.80.26
Courriel

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é
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
167 invités en ligne
membre en ligne: -
RSS Feed