2013-03-21 1 views
0

의 출력에 멈추고, 첫 번째 NET 예제와 거의 동일한 프로그램을 작성했습니다.Poco :: Net 라이브러리는 <a href="http://pocoproject.org/documentation/index.html" rel="nofollow">POCO website</a>에있는 슬라이드로 이동하는 Poco :: Net :: SocketStream

#include <iostream> 
#include <cstdlib> 

#include <Poco/Net/SocketAddress.h> 
#include <Poco/Net/StreamSocket.h> 
#include <Poco/Net/SocketStream.h> 
#include <Poco/StreamCopier.h> 


int main(int argc, char** argv){ 

    Poco::Net::SocketAddress socket_address("www.google.com",80); 
    Poco::Net::StreamSocket stream_socket(socket_address); 
    Poco::Net::SocketStream socket_stream(stream_socket); 

    socket_stream << "GET/HTTP/1.1\r\n" 
      "Host: www.google.com\r\n" 
      "\r\n"; 
    socket_stream.flush(); 

    Poco::StreamCopier::copyStream(socket_stream,std::cout); 

    return EXIT_SUCCESS; 
} 

CopyStream 함수는 일부 데이터를 출력 한 다음 중단됩니다. 나머지 데이터를 얻으려면 어떻게해야합니까?

+0

당신이 옳습니다. 나는 예제를 컴파일하고 실행했으며 2 ~ 3 초가 지나면 멈 춥니 다 : S –

답변

-1

테스트 할 때 내 자신의 TCP 서버를 사용하면 원격 서버에 연결할 수없는 경우 코드가 멈추는 것을 알 수 있습니다.

실행중인 TCP 서버가 있고 원격 서버와 데이터를주고받은 후 원격 서버 연결을 닫으면 (서버를 종료 할 때) 서버 응답이 stdout 콘솔로 이동합니다.

프록시를 통해 google에 연결하려고합니까?

또 다른 단서 ... 마시고에서 :: 순 :: SocketStream 설명 :

항상 이 타임 아웃이 소켓 설정되어받을 수 있도록하는 SocketStream에서 포맷 된 입력을 사용. 그렇지 않으면 프로그램이 예기치 않게 Hang 일 수 있습니다.

코드와 함께 try-catch 블록을 사용하여 예외가 있는지 테스트 해보십시오.

행운

0

사용 마시고 :: 대신 순 :: DialogSocket.