C ++获得足够的权限绑定到端口80

时间:2013-07-27 11:47:48

标签: c++ http privileges

我正在编写一个C ++应用程序,它接受来自浏览器的HTTP请求并发回响应。

int port = 2127; //80;
int bind_res = ::bind(port, p_ref->ai_addr, p_ref->ai_addrlen);

当我将它设置为侦听端口2127时,应用程序在OSX上按预期工作。但是当我将其设置为侦听端口80时,应用程序停止工作,异常:

  

server:bind:Permission denied

我的应用程序是一个命令行应用程序,它由其他GUI应用程序打开,也是用C ++编写但用Qt编写。

如何获得足够的权限绑定到端口80?是否有任何API显示用户和密码提示 - 例如在XAMPP控制面板中 - 获得这些权限?

编辑: 我编写了在OSX 10.8 Mountain Lion上运行的应用程序。

1 个答案:

答案 0 :(得分:1)

通常由于两个问题而无法绑定:

  1. 某些东西(Apache服务器,Skype)已绑定到该端口。
  2. 您以用户身份运行并尝试绑定到1024以下的端口。
  3. 感觉你遇到了第二种情况的问题。对于使用超级用户权限运行,所有Unix上都有sudo命令(OSX是Unix)。

    如果你不喜欢sudo,那么你可以permanently redirect the port to other port可以被用户约束。