2010-11-05 91 views
0

我的C應用程序需要連接到Http服務器並獲得響應,並且在連接到未在端口80上運行的服務器時遇到一些問題。Libcurl:無法連接到Django開發服務器

我在端口8000上使用Django開發服務器,而不是在我的開發環境中使用Apache。但我只是在端口80上測試連接到Apache上的Django頁面,並且libcurl能夠連接。我可以在瀏覽器中連接到端口8000,但libcurl不能。

我試過這個網址:http://192.168.1.186:8000/mypage/http://192.168.1.186/mypage/,然後將CURLOPT_PORT設置爲8000,但都沒有工作。

特定的錯誤是

libcurl error: 7 
libcurl error: couldn't connect to server 

服務器正在運行的CentOS 5.5,我有8000端口通過iptables的轉發和SELinux的被禁用。

我只是包含相關的代碼。

char* url = "http://192.168.1.186:8000/mypage/"; 
CURL* curl = curl_easy_init(); 
curl_easy_setopt(curl, CURLOPT_URL, url); 
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 10); 
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, wait_for_response); 
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response); 
curl_easy_perform(curl); 

另外使用命令行卷曲也不起作用。
curl http://192.168.1.186:8000/mypage/

編輯:我發現,如果我切換到Apache的8000端口捲曲正常工作,所以也有一些是在無視我的請求Django的服務器。

+0

你可以:'telnet 192.168.1.186 8000'?如果這也失敗了,這是一個網絡/防火牆/配置問題,而不是編程/捲曲問題。 – nos 2010-11-05 15:04:24

+0

我的連接被拒絕。我更新了問題,因爲我發現,捲曲正常工作時,Apache是​​8000。所以Django的服務器只是忽略我的捲曲請求。 – jonescb 2010-11-05 15:07:48

回答

4

我明白了。

我用這個命令來啓動服務器
python manage.py runserver 192.168.1.186:8000

但出於某種原因,你必須使用0.0.0.0:8000代替。
python manage.py runserver 0.0.0.0:8000

我不知道這是爲什麼起作用,但確實如此。

+0

我不能相信這個工作 – tjb 2012-02-21 16:00:15