2009-11-29 9 views
1

내가 CURL을 너무 싫어한다. URL을 빠르게 열면 너무 많은 의존성이있다. 웹 페이지의 내용을 검색 할 필요조차 없으며 서버에 GET HTTP 요청을해야합니다. 나는이 작업을 수행 할 수 있으며, CURL을 말을하지 않습니다! @ 가장 최소한의 방법은 무엇C++에 대한 대체 CURL이 있습니까?

# $

+1

플랫폼이 다르거 나 특정 플랫폼이 있습니까? –

+0

나는 이것이 LibCURL에 관한 것이며 CURL이 아니라고 생각한다 – Lothar

답변

5

lots of choices을있다! 시도해보십시오. libwww -하지만 대부분의 사람들은 libcurl을 선호합니다. 사용하기가 훨씬 쉽습니다.

+1

2009 년에 응답했을 때도 완전히 버려진 라이브러리이다. – Lothar

-1

system("wget -q -O file.htm http://url.com");

+1

물론 이것은 대상 컴퓨터에 wget이 존재해야한다. –

+0

'system'을 사용하는 것은 좋은 생각이 아닙니다. 특히 명령의 일부가 (신뢰할 수 없거나 어리석은) 사용자에 의해 제공되는 경우에 특히 좋습니다. 예 : 사용자가 'http://url.com'을 제공 한 경우 rm -rf ~'를 url로 사용하면 명령이 홈 디렉토리를 삭제할 수 있습니다. – chtz

3

은 매우 가벼운있는 방법은 영국의 대형 미디어 업체에 대한 높은 규모의 백엔드 서비스를 구현할 때 나는이 자신을 완료했습니다.

이 방법은 매우 운영 체제에 따라 다릅니다.

  1. 는 두 개의 빈 줄을 잊지 마십시오 "GET /path/to/url HTTP/1.1\r\nHost: www.host.com\r\n\r\n"합니다 (Host 헤더는 HTTP/1.1 대부분의 가상 서버에 필요한 보내는 HTTP 서버
  2. 에 TCP 소켓을 열고 줄 바꿈이 필요 HTTP 헤더에 대한뿐만 아니라 캐리지 리턴) 당신은 당신이 할 수있다 연결의 끝 루게릭 병에 소켓을 닫으려고하는 경우에
  3. 소켓

을 닫으 응답

  • 대기 o Connection: close\r\n을 헤더의 일부로 보내서 웹 서버를 검색 한 후 연결을 종료한다는 것을 웹 서버에 알리고 자합니다.

    인코딩 된 웹 페이지를 가져 오는 경우 문제가 발생할 수 있습니다.이 경우 가져온 데이터를 해석하는 데 논리를 추가해야합니다.

  • +0

    Win32를 사용하는 경우 소켓 함수를 호출하기 전에 Windows 소켓 레이어를 초기화해야합니다. http://www.nullterminator.net/winsock을 참조하십시오.튜토리얼을위한 html - 서버가 아닌 클라이언트를 만들고 싶다는 점에 유의하십시오. –

    3

    Windows (Windows XP, Windows 2000 Professional SP3 이상)에서는 WinHttpReadData API를 사용할 수 있습니다. 또한 해당 페이지 하단에 예제가 있습니다. 나는 가능한 한 적은 수의 종속성을 필요로 할 때 MSDN

    0

    의 Windows HTTP 서비스

    더 많은 정보는 내가 Winsock을 사용하고 그것을 잘 일했다. 별도의 라이브러리 나 Microsoft WinHTTP 라이브러리를 사용하는 것보다 더 많은 코드를 작성해야합니다.

    필요한 기능은 WSAStartup, socket, connect, send, recv, closesocket 및 WSACleanup입니다.
    send 기능에 대한 샘플 코드를 참조하십시오.

    관련 문제