2013-07-27 42 views
0

我在写一个C++应用程序,它接受来自浏览器的HTTP请求并发回响应。C++获得足够的权限绑定到端口80

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

的应用软件可在OSX预期,当我将它设置在端口2127听但是,当我将它设置为侦听端口80,该应用程序停止了与例外的工作:

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

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

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

编辑: 我写的应用程序运行在OSX 10.8山狮。

+0

这是操作系统特定的。 –

+0

好的,我为OSX编写应用程序。 – yunhasnawa

+0

如果其他东西已经绑定到端口80,那么您将获得拒绝权限。你有一个Web服务器已经在该端口上监听吗? – cdmh

回答

1

通常你不能因为两个问题结合:

  1. 东西(Apache服务器,Skype公司)已经被绑定到该端口。
  2. 你的用户身份,并试图绑定到一个端口低于1024

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

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

+0

不,在第一种情况下你会得到'EADDRINUSE'。 – Neil

+0

是的,先生,我有第二种情况的问题,我能够通过使用sudo绑定到端口80。但不是输入sudo,我想要的是弹出对话框,提示用户名和密码,因为我的应用程序不打算直接在终端上运行。 – yunhasnawa

+0

是的,但在其他地方重定向端口80呢?谢谢,尼尔,纠正了措辞。 –

相关问题