使用boost库,无法释放udp端口的问题
2017-08-18 11:38
253 查看
在使用boost的socket封装库的时候,遇见一个奇怪的问题,就是关闭boost的udp socket,但是 udp的端口一直没有释放,这是一个很严重的问题,因为对于服务器来讲,由于一直运行,端口没释放会导致端口越来越少吗,最后没端口用
代码如下
网上说要配置地址可重用,于是试了一把
一样的没办法释放
后来发觉closesocket可以正常的释放
可是boost::shared_ptr<boost::asio::ip::udp::socket>不能直接处理,后来找到一个方法转化成本地socket
于是就能正常释放udp端口了
·····································
更新
这样也是可以的
代码如下
trans_redirect_socket->close(); trans_redirect_socket->shutdown(boost::asio::ip::udp::socket::shutdown_both);
网上说要配置地址可重用,于是试了一把
int nNetTimeout = 3; result = setsockopt(native_sock, SOL_SOCKET,SO_SNDTIMEO,(char *)&nNetTimeout, sizeof(int)); result = setsockopt(native_sock, SOL_SOCKET, SO_REUSEADDR, (char *)&nNetTimeout, sizeof(int)); BOOL bDontLinger = FALSE; setsockopt(native_sock, SOL_SOCKET, SO_DONTLINGER, (const char*)&bDontLinger, sizeof(BOOL));
一样的没办法释放
后来发觉closesocket可以正常的释放
可是boost::shared_ptr<boost::asio::ip::udp::socket>不能直接处理,后来找到一个方法转化成本地socket
closesocket(it->second->trans_redirect_socket->native());
于是就能正常释放udp端口了
·····································
更新
trans_redirect_socket->shutdown(boost::asio::ip::udp::socket::shutdown_both); trans_redirect_socket->close();
这样也是可以的
trans_redirect_socket->shutdown(boost::asio::ip::udp::socket::shutdown_both);是关闭接收发送资源,就像家里的灯的开关,只是关闭,还可以打开,电源还在,开关还在,没有完全销毁
trans_redirect_socket->close();关闭socket,就相当于把家里的开关直接拆了,拆了除非你重新安装一个开关,才能使用
相关文章推荐
- Windows下安装Apache HTTP Server 无法启动遇到OS10048 通常每个套接字地址(协议/网络地址/端口)只允许使用一次 的问题解决方法
- PG数据库更改端口后psql等命令无法使用的问题
- 中标麒麟(linux)下QUdpSocket无法使用组播发送数据问题
- Vs2015 win10虚拟机启动问题:无法设置UDP端口 解决方法 合集(转载)
- WebLogic启用管理端口后使用stopWebLogic无法正常停止服务的问题
- 有关android中的ADB默认端口被使用导致无法启动adb.exe的问题
- 使用CAAnimationGroup组合关键帧动画,设置delegate,造成VC无法释放问题
- 使用keil5.10软件仿真教程以及解决软件仿真unknown signal无法识别引脚端口问题
- 解决docker 无法释放端口的问题
- 菜鸟必看--关于JDK怎样在有还原软件的机器上配置及无法使用的问题
- 关于在使用Exchange2003系统时无法向sina,yahoo,hotmail等邮箱发送邮件问题的解决方法
- 解决迅雷无法使用右键下载的问题
- 安装完vs.2005之后,重新安装iis后无法使用http方式访问asp.net工程的页面的问题的解决方法
- 使用installshild解决某些安装文件无法在win2003上安装的问题
- 使用installshild解决某些安装文件无法在win2003上安装的问题
- 关于使用Adoeb SVG Viewer在IE中无法正常显示SVG文档的问题
- [导入]使用installshild解决某些安装文件无法在win2003上安装的问题
- 解决使用ASP无法连接 ORACLE 9i 数据库的问题。
- 关于HP-UX中出现无法使用历史命令的问题的解决方案
- 解决windows2003 sp1下使用sql2000的端口问题