나는 Poco net libraries를 사용하여 TwitchPlaysPokemon 스트림에 대한 업데이트를 몇 시간마다 이메일로 보내 줄 재미있는 프로그램을 만들기 위해 C++로 코드를 작성하고있다. 여기 내 코드 :매우 구체적인 웹 URL을 어떻게 처리합니까?
#include <iostream>
#include "Poco/Net/SocketAddress.h"
#include "Poco/Net/StreamSocket.h"
#include "Poco/Net/SocketStream.h"
#include "Poco/StreamCopier.h"
using namespace std;
using namespace Poco::Net;
using namespace Poco;
int main(int argc, char *argv[])
{
string url = "www.reddit.com";
string fullPage;
SocketAddress sa(url, 80);
StreamSocket socket(sa);
SocketStream str(socket);
str << "GET/HTTP/1.1\r\n"
"Host: " << url << "\r\n"
"\r\n";
str.flush();
StreamCopier::copyStream(str, cout);
}
이 정확한 코드는 완벽하게 작동합니다. www.reddit.com
의 원시 HTML을 가져 와서 콘솔에 인쇄합니다.
다음 중 하나 : 그러나, 나는 내 프로그램에 대한 두 곳 중 하나에서 정보를 얻으려고
Here (URL = "http://www.reddit.com/live/sw7bubeycai6hey4ciytwamw3a")
또는
Here (URL = " https://sites.google.com/site/twitchplayspokemonstatus/ ")
이 두 가지 모두 내 용도에 맞게 사용할 수 있습니다. 문제는 프로그램에서 URL로이 값을 연결하면 프로그램에서 내가 무슨 말을하는지 전혀 알 수 없습니다. 특히, 나는 다음과 같은 얻을 :
을 이렇게 명확하게 호스트를 찾을 수 없습니다. 이것은 인터넷 프로토콜, 호스트 등에 대해 거의 알지 못해서 내가 붙어있는 곳입니다. (cmd prompt ping을 사용하여)이 웹 사이트에 대한 특정 IP 주소가 있는지 확인하려고했으나 ("Ping 요청에서 호스트를 찾을 수 없습니다. www.reddit.com/live/sw7bubeycai6hey4ciytwamw3a"). Poco 라이브러리는 URL url (www.reddit.com), IPv4 및 IPv6 주소를 SocketAddress에 대한 호스트 입력으로 받아들입니다. 여기서 url 변수를 사용하면 다른 변수는 기본적으로 항상 있어야하는 포트입니다. 80)
질문 : 나는 내가 마시고 라이브러리에 호스트를 식별 할 방법을 알아내는 데 도움이 필요합니다. 즉, 위에 나열된 두 사이트 중 하나의 코드를 인식하고 페이지에서 HTML을 가져올 수있는 방식으로 호스트를 올바르게 참조하려면 어떻게해야합니까?
예외가 발생할 때 "사례"를 찾아보십시오. 귀하의 코드에서 HostNotFound는 여러 가지 다른 경우에 던져진 것 같습니다. 응용 프로그램을 실행하는 동일한 컴퓨터의 브라우저에서 해당 링크를 탐색 할 수 있습니까? – mangusta
어떤 예외적 인 경우가 제 예외인지 알 수 없습니다. 내가 휴식을 취하는 대신 계속하면, 몇 가지 예외는'DNSException ("EAI", NumberFormatter :: format (code));을 던져서 던져 DNSException ("해결하는 동안 임시 DNS 오류", arg); ', 그리고 마지막으로'DNSException을 던집니다 ("해결하는 동안 복구 할 수없는 DNS 오류", arg); 이것들이 일종의 도미노 효과인지 아니면 상호 배타적 인 예외인지 (확실하게 마지막 두개는 관련 됨) – user3330644
SocketAddress 객체를 생성 할 때 전체 URL을 사용합니까?웹 사이트 주소 만 사용하고 GET 요청을 보낼 때는 전체 URL을 사용해야합니다. SocketAddress 생성자에 전체 URL을 전달하고 있습니다. 따라서 오류가 발생합니다. – mangusta