Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何检查libwebsockets服务器端口是否已被占用?_C++_C_Websocket - Fatal编程技术网

C++ 如何检查libwebsockets服务器端口是否已被占用?

C++ 如何检查libwebsockets服务器端口是否已被占用?,c++,c,websocket,C++,C,Websocket,我遇到一个问题,两个libwebsockets服务器实例试图使用同一端口。第一个实例运行正常,但第二个实例在尝试执行libwebsocket\u create\u context(..)时崩溃: 是否有办法检查所需端口是否已被占用 try{}catch(..){}无法捕获崩溃。如果所需端口已在使用,则libwebsocket\u create\u context应该返回NULL。如果您没有遇到这种情况,请尝试通过libwebsocket\u context\u destroy@simonc进行调

我遇到一个问题,两个libwebsockets服务器实例试图使用同一端口。第一个实例运行正常,但第二个实例在尝试执行libwebsocket\u create\u context(..)时崩溃:

是否有办法检查所需端口是否已被占用


try{}catch(..){}无法捕获崩溃。

如果所需端口已在使用,则
libwebsocket\u create\u context
应该返回
NULL
。如果您没有遇到这种情况,请尝试通过
libwebsocket\u context\u destroy
@simonc进行调试。我编译了一个调试库,发现当一个libwebsocket端口已打开时,该库在
close(sockfd)
函数上失败,代码为:
If(n<0){lwsl\u err(“绑定到端口%d(%d%d)时出错)\n,info->port,n,errno);close(sockfd);goto bail;}
。显然,它无法关闭另一个libwebsocket实例的端口。我不知道注释
close(…)
函数是否是一个好主意,但这已经解决了问题。我想我应该向@warmcatt提出这个问题。这听起来像是libwebsocket中的一个bug。如果您有时间,最好将问题的描述(以及建议的修复)发布到他们的Yup中,事实证明这确实是一个bug。新版本解决了这个问题。
  struct lws_context_creation_info info;
  memset(&info, 0, sizeof(info));
  info.port = 9000;
  info.protocols = protocols;
  info.extensions = libwebsocket_get_internal_extensions();
  info.gid = -1;
  info.uid = -1;
  struct libwebsocket_context *context;
  context = libwebsocket_create_context(&info);