1
메신저에서 다중 스레드 calC++ webservice를 빌드하려고합니다. 원래 예제를 기반으로합니다. 그래서 저는 바이너리에서 SO_REUSEADDR을 만들고 싶습니다.C++ gsoap SO_REUSEADDR
int main(int argc, char* argv[])
{
CalculatorService c;
int port = atoi(argv[1]) ;
printf("Starting to listen on port %d\n", port) ;
c.soap->bind_flags |= SO_REUSEADDR;
if (soap_valid_socket(c.bind(NULL, port, 100)))
{
CalculatorService *tc ;
pthread_t tid;
for (;;)
{
if (!soap_valid_socket(c.accept()))
return c.error;
tc = c.copy() ; // make a safe copy
if (tc == NULL)
break;
pthread_create(&tid, NULL, (void*(*)(void*))process_request, (void*)tc);
printf("Created a new thread %ld\n", tid) ;
}
}
else
{
return c.error;
}
printf("hi");
}
void *process_request(void *calc)
{
pthread_detach(pthread_self());
CalculatorService *c = static_cast<CalculatorService*>(calc) ;
c->serve() ;
c->destroy() ;
delete c ;
return NULL;
}
내가 이것을 구축하려고하면 :
g++ -o calcmulti main.cpp stdsoap2.cpp soapC.cpp soapCalculatorService.cpp -lpthread
내가 얻을
main.cpp: In function 'int main(int, char**)':
main.cpp:13: error: invalid use of 'struct soap'
비누 구조체는 stdsoap2.h
struct SOAP_STD_API soap
{
int bind_flags; /* bind() SOL_SOCKET sockopt flags, e.g. set to SO_REUSEADDR to enable reuse */
}
어떻게 생각에 잘못하고있는거야? : <