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:
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?
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);
}
Valora esta pregunta


0