c++ gsoap SO_REUSEADDR
c++ gsoap SO_REUSEADDR
im试图构建一个多线程calc web服务。基于原始示例。所以我想在我的二进制中构建so_reuseaddr。
int main(int argc, char* argv[])
{
CalculatorService c;
int port = atoi(argv[1]) ;
printf("Starting to listen on port %dn", 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 %ldn", 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'
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 */
}
我在做什么错?:&lt;
它取决于您使用SOAP2CPP生成器的选项。
使用-i选项计算器服务从肥皂结构继承,然后您应该使用:
c.bind_flags |= SO_REUSEADDR;
带有-j选项计算器服务包含肥皂结构,然后您应该使用:
c.soap->bind_flags |= SO_REUSEADDR;
看来,您使用-i选项考虑计算器服务包含肥皂结构。
相关文章:
- 如何使用ndk-build.cmd构建Android.so文件
- 在C++代码中包含opencv时,使用ctypes创建.so文件
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- CLANG格式在缺少libtinfo.so.5库中不起作用
- C++ 运行时链接器错误 (liblog4cpp.so.5) Eclipse
- 使 ld 忽略来自 /etc/ld.so.conf 的目录
- N-API include an .so or dll
- 加载共享库时C++错误:libopencv_ximgproc.so.4.4
- 如何从构建 libgpio.so 的生成文件构建libgpio.a
- 用于构建 cuda .so 文件(共享库)的生成文件
- 无法从 SO 文件调用 SO 文件的函数 - C++生成文件
- 共享库 (.so) 没有扩展名的 Linux 可执行文件之间的区别?
- 在jupyter notebook和google colab中使用.so
- 如何在 C++ 的 .so 文件中包含库
- JNI,使用两个 .so 文件时出错,其中一个文件需要另一个文件
- OpenVINO - 推理库插件 libMKLDNNPlugin.so 无法解析依赖关系
- 如何使用QtCreator将应用程序与"libqsqlpsql.so"链接?
- 添加符号 libgtest.so 错误:命令行中缺少 DSO
- 为什么C++可执行文件在与较新的libstdc++.so链接时运行得更快?
- libstdc++.so.6:添加符号时出错:命令行中缺少 DSO