0

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

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

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

服务器:绑定:权限被拒绝

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

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

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

4

1 回答 1

1

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

  1. 某些东西(Apache 服务器、Skype)已经绑定到该端口。
  2. 您以用户身份运行并尝试绑定到 1024 以下的端口。

感觉你对第二种情况有问题。为了以超级用户权限运行,sudo所有 Unix 上都有命令(OSX 是 Unix)。

如果您不喜欢,sudo则可以将端口永久重定向到用户可以绑定的其他端口。

于 2013-07-27T12:57:22.310 回答