我的C应用程序需要连接到Http服务器并获得响应,并且在连接到未在端口80上运行的服务器时遇到一些问题。
我在开发环境中使用端口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,我确实通过iptables转发了端口8000,并禁用了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也不起作用。
curl http://192.168.1.186:8000/mypage/
编辑:我发现如果我将Apache切换到端口8000 curl工作正常,那么Django服务器中有些东西忽略了我的请求。
答案 0 :(得分:4)
我明白了。
我正在使用此命令启动服务器
python manage.py runserver 192.168.1.186:8000
但出于某种原因,你必须使用0.0.0.0:8000
python manage.py runserver 0.0.0.0:8000
我不知道为什么会这样,但确实如此。