LiaGalanodel
Messages postés19Date d'inscriptionmercredi 3 mars 2010StatutMembreDernière intervention29 juillet 2010
-
29 mars 2010 à 14:29
LiaGalanodel
Messages postés19Date d'inscriptionmercredi 3 mars 2010StatutMembreDernière intervention29 juillet 2010
-
30 mars 2010 à 09:23
Bonjour a tous je ne sais pas si je poste sur le bon sujet mais voila j'ai un problème.
Je veu tout simplement créer un server mais je n'y arrive pas.
Le but étant que grace a ma fonction pour utiliser le server il me retourne un bool pour savoir si la focntion c'est correctement efféctué.
Voila les codes:
*
* serverfunction.h
*
* Created on: 18 mars 2010
* Author: amelie.athanassiadis
*/
#ifndef SERVERFUNCTION_H_
#define SERVERFUNCTION_H_
using namespace std;
class SocketServer
{
public:
bool InitSocketServer(const char Address, int Port);
};
#endif /* SERVERFUNCTION_H_ */
/*
* serverfunction.cpp
*
* Created on: 18 mars 2010
* Author: amelie.athanassiadis
*/
#include
#include <netdb.h>
#include <sys/epoll.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <errno.h>
#include
#include <fcntl.h>
#include <string.h>
#include "serverfunction.h"
using namespace std;
bool SocketServer::InitSocketServer(const char * Address, int Port)
{
bool CreateSocket = false;
struct sockaddr_in SocketServerParam;
int SocketServer;
// Configure a server socket in connected mode...
SocketServer = socket(AF_INET, SOCK_STREAM, 0) ;
if (SocketServer != -1)
{
memset(&SocketServerParam, 0, sizeof (struct sockaddr_in)) ;
/*Set the first numbyte of the block memory
//pointed by ptr to the specified value (ptr, value to be set, number of
bytes to be set to the value)*/
SocketServerParam.sin_family = AF_INET;
// ...on specified address and port...
SocketServerParam.sin_port = htons(Port) ; //Port
SocketServerParam.sin_addr.s_addr = inet_addr(Address) ; //Address IP
if (SocketServerParam.sin_addr.s_addr != INADDR_NONE)
{
/* bind the socket to the Internet address */
if (bind(SocketServer, (struct sockaddr *) &SocketServerParam,
sizeof (struct sockaddr_in)) != -1)
{
// Allow IP address immediate reuse
int flagReuseAddress = 1;
if (setsockopt(SocketServer, SOL_SOCKET, SO_REUSEADDR,
&flagReuseAddress, sizeof (int)) != -1)
{
// ...for one client
if (listen(SocketServer, 1) != -1)
{
// Initialize DbMa_SdbtpInterfaceFileDescriptor
// variable
int DbMa_SdbtpInterfaceFileDescriptor = accept(
CreateSocket, NULL, NULL) ;
if (DbMa_SdbtpInterfaceFileDescriptor != -1)
{
// The connection is established with the client
CreateSocket = true;
}
}
}
}
}
// Close Sdbtp socket connection server
close(SocketServer) ;
}
return CreateSocket;
}
/*
* server.cpp
*
* Created on: 18 mars 2010
* Author: amelie.athanassiadis
*/
#include
#include <netdb.h>
#include <sys/epoll.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <errno.h>
#include
#include <fcntl.h>
#include <string.h>
#include "serverfunction.h"
using namespace std;
int main (void)
{
InitSocketServer("127.0.0.1", 2000);
}
Mon programme est sous l'environnement Linux.
Je vous met ci dessous mes erreurs (je trvail sous eclipse):
[b]prototype for 'bool SocketServer::InitSocketServer(const char*,int)' does not match any in class 'SocketServer'
candidate is: bool SocketServer::InitSocketServer(char, int)
'InitSocketServer' was not declared in this scope/b
LiaGalanodel
Messages postés19Date d'inscriptionmercredi 3 mars 2010StatutMembreDernière intervention29 juillet 20101 30 mars 2010 à 09:23
C'est bon j'ai trouvé la solution.
C'était une simple erreur d'oubli dans le fichier serverfunction.h j'ai oublié de mettre le * dans la déclaration de la fonction:
/*
* serverfunction.h
*
* Created on: 18 mars 2010
*
*/
#ifndef SERVERFUNCTION_H_
#define SERVERFUNCTION_H_
using namespace std;
class SocketServer
{
public:
bool InitSocketServer(const char* Address, int Port);
};
#endif /* SERVERFUNCTION_H_ *
Voila, j'ai appris qu'il fallait bien regarder les messages d'erreur pour retrouver où elle est. Une erreur simple pour deux jours de galère parce que je n'ai pas assez réfléchis.
LiaGalanodel
Messages postés19Date d'inscriptionmercredi 3 mars 2010StatutMembreDernière intervention29 juillet 20101 29 mars 2010 à 15:02
Aïe c'est vrai!
Désolé je suis nouvelle en C++.
J'ai modifié mon programme mais ça ne fonctionne toujours pas en plus des trois erreurs d'avant il me met:
invalid conversion from 'const char*' to 'char'
LiaGalanodel
Messages postés19Date d'inscriptionmercredi 3 mars 2010StatutMembreDernière intervention29 juillet 20101 29 mars 2010 à 15:03
Ah et désolé j'ai oublié une erreur:
initialize argument 1 of 'bool SocketServer::InitSocketServer(char, int)
Est ce que ça veut dire que je dois initialiser ma focntion?