【发布时间】:2014-01-16 12:13:57
【问题描述】:
我在绑定套接字时遇到问题,并且在以用户身份运行程序时被拒绝。这行代码会产生错误。
_acceptor = new boost::asio::ip::tcp::acceptor(io, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), serverPort));
错误是
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::system::system_error> >'
what(): bind: Permission denied
但是,如果我以 root 身份运行,它可以正常工作。我尝试使用
禁用 apparmor 和防火墙sudo service apparmor stop
sudo ufw disable
但我仍然有问题。我是否错过了可以拒绝许可的东西? 我真的很想弄清楚这一点,因为我不喜欢以 root 身份运行我的 IDE 和未经验证的程序。
我正在运行安装了所有更新的 xubuntu 13.10。
【问题讨论】:
-
serverPort的值是多少?第一个 1024 端口仅限于 root 用户,所以如果serverPort1024 -
尝试设置另一个端口,例如 3000,此端口可能仅限于特定的服务/协议
-
Bloddy.... GAAH.... 就是这样。我认为端口是正确的,因为它位于函数的开头,但由于某种原因,我正在使用的第 3 方库之一将值更改为 64。我摆脱了更改,现在它可以工作了!这就是为什么我讨厌使用不确定的库。我很快就要自己写了!
-
好的,我会添加答案,以便您接受。