2013-07-27 43 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呢?謝謝,尼爾,糾正了措辭。 –

相關問題