grandmetre
Mitglied
Hallo an alle,
ich habe das Problem, dass soap_done() aus der gSoap-Bibliothek den Socket nicht richtig schließt, denn wenn ich kurz nach Beenden des Programms es wieder aufrufe, bekomme ich ein
Erst wenn ich ein wenig warte ist der Socket wieder zugänglich. Ist dies ein bekanntes Problem, oder stelle ich mich mal wieder nur doof an?
Hier der aus der gSoap doc benutzte Code:
Ich habe die Schleife zum erneuten Warten auf Anfragen bewusst weggelassen.
ich habe das Problem, dass soap_done() aus der gSoap-Bibliothek den Socket nicht richtig schließt, denn wenn ich kurz nach Beenden des Programms es wieder aufrufe, bekomme ich ein
Code:
Error 28 fault: SOAP-ENV:Server [no subcode]
"Address already in use"
Detail: bind failed in soap_bind()
Erst wenn ich ein wenig warte ist der Socket wieder zugänglich. Ist dies ein bekanntes Problem, oder stelle ich mich mal wieder nur doof an?

Hier der aus der gSoap doc benutzte Code:
Code:
int m, s; //master and slave sockets
soap_init(&soap); //use the service operation request dispatcher
// printf("connecting socket to \"%s:%d\"\n", url, port);
m = soap_bind(&soap, url, port, 100); //(soap struct, url(NULL stands for localhost), port, )
if(m < 0){
fprintf(stderr, "rcTestClient: could not bind socket\n");
soap_print_fault(&soap, stderr);
exit(-1);
} else {
s = soap_accept(&soap);
if(s < 0){
soap_print_fault(&soap, stderr);
return -1;
}
// printf("%d; accept connection from IP=%ld.%ld.%ld.%ld socket = %d\n", i,
// (soap.ip>>24)&0XFF, (soap.ip>>16)&0XFF, (soap.ip>>8)&0XFF, soap.ip&0XFF, s);
if (soap_serve(&soap) != SOAP_OK){ // process RPC request
soap_print_fault(&soap, stderr); //print error
}
soap_destroy(&soap);
soap_end(&soap);
}
soap_done(&soap); //close master socket and detach socket
return 0;
Ich habe die Schleife zum erneuten Warten auf Anfragen bewusst weggelassen.