elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Problemas al definir una clase (Windows, GCC) en: 22 Agosto 2013, 17:57 pm
Estoy intentando definir una clase para poder acceder a sus funciones desde otras clases. La clase debería ser estática, es decir, no debe ser instanciada.

Éste es el código de la cabecera (ServerClass.h)

Código
  1. #define DEFAULT_BUFLEN 512
  2. #ifndef __SERVERCLASS_H__
  3. #define __SERVERCLASS_H__
  4.  
  5. class ServerClass
  6. {
  7. public:
  8.    static int CreateServer(HWND);
  9.    static int CloseServer();
  10.    char* getcbuffer();
  11.    int listensock();
  12. private:
  13.    SOCKET ListenSocket;
  14.    SOCKET ClientSocket;
  15.    char recvbufx[DEFAULT_BUFLEN];
  16.    int recvbuflen;
  17. };
  18. #endif
  19.  

El problema es que al compilar, me da dos errores algo extraños en las líneas 6 y 17:

Código:
En linea 6: error: an anonymous struct cannot have function members
En linea 17: error: abstract declaratos '<anonymous class>' used as declaration

¿Por qué me detecta la clase como una estructura, si le he añadido la palabra 'class'? Es un proyecto en Code::Blocks para Windows, usando el compilador GNU GCC, y el proyecto es en C++, no en C.
2  Programación / Programación C/C++ / Error de violación de acceso en mi programa en: 5 Febrero 2012, 19:48 pm
Buenos días. Estoy tratando de crear un pequeño programa cliente-servidor usando C++. He de admitir que soy un poco nuevo en esto de C++ y sobre todo en el uso de sockets (soy programador de C#).

Bien, la cuestión es que mi programa produce un error de violación de acceso (0xC0000005) al ejecutar una de sus lineas. Éste es el programa en cuestión (Es el cliente):

Código:
SOCKET client;
struct hostent * host;
char* hostname;

int main()
{
    hostname = new char[1024];
    client = socket( AF_INET, SOCK_STREAM, 0 );
    printf("Please enter the IP or name of the host to join> ");
    fflush( stdout );
    scanf("%s", hostname);
    printf("\n\nAttempting connection with host %s", hostname);
    host = gethostbyname( hostname );
    struct sockaddr_in sin;

    memset( &sin, 0, sizeof sin );

    sin.sin_family = AF_INET;
    sin.sin_addr.s_addr = ((struct in_addr *)(host->h_addr))->s_addr;
    sin.sin_port = htons( 21 );
    if ( connect( client, (PSOCKADDR)&sin, sizeof sin ) == SOCKET_ERROR )
    {
    printf("Error 01: Could not connect to the defined host: %s.", hostname);
    return FALSE;
    }
    closesocket( client );
    return 0;
}

El error en cuestión me lo produce al ejecutar la siguiente línea:

Código:
sin.sin_addr.s_addr = ((struct in_addr *)(host->h_addr))->s_addr;

Y no sé que hacer para solucionarlo, pues apenas hay documentación en internet acerca del uso de sockets en C++. Les agradecería que me guiaran un poco en mi tarea. Muchas gracias.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines