Linux - ayuda con QSocketNotifier

 
Vista:

ayuda con QSocketNotifier

Publicado por Pedro (3 intervenciones) el 02/07/2009 18:55:47
Quiero hacer una aplicación QT, que reciba sockets. He visto que puede hacerse con la clase QSocketNotifier pero no entiendo muy bien como usarla. Lo que quiero es que cuando llegue un socket, notifique y ejecute una función, pero no lo consigo. Mi código es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
void socket_parser::launchServer(int port1, int port2) {
    struct sockaddr_in echoserver;
 
    if (port1 <=0)
    	socket_parser::inputPort = DEFAULT_PORT;
    else
    	socket_parser::inputPort = port1;
 
    if (port2 <=0)
    	socket_parser::outputPort = socket_parser::inputPort;
    else
    	socket_parser::outputPort = port2;
 
    // Create the socket
    if ((socket_parser::serversock = socket(PF_INET, SOCK_DGRAM, 0)) < 0) {
      perror("Failed to create socket"); exit(1);
    }
    // Construct the server sockaddr_in structure
    memset(&echoserver, 0, sizeof(echoserver));       // Clear struct
    echoserver.sin_family = AF_INET;								// Internet/IP
    echoserver.sin_addr.s_addr = htonl(INADDR_ANY);	// Incoming addr
    echoserver.sin_port = htons(inputPort);					// server port
 
    // Bind the server socket
    if (bind(socket_parser::serversock, (struct sockaddr *) &echoserver,
                                 sizeof(echoserver)) < 0) {
      perror("Failed to bind the server socket"); exit(1);
    }
 
    QSocketNotifier *sn = new QSocketNotifier(socket_parser::serversock, QSocketNotifier::Read);
    QObject::connect( sn, SIGNAL(activated(int)),this, SLOT(dataReceived()) );
 
     fprintf(stdout, "Closing server...
");
    close(socket_parser::serversock);
}
serversock es el descriptor del socket. El problema es que no entiendo el 2º y 3er argumento del método connect. ¿qué tengo que poner?. Entiendo que el metodo dataREceived es el que va a llamar cuando detecte que hay algo que leer ¿no?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder