2013-03-21 27 views
0

用滑板上POCO website持續的輸出,我寫了一個程序幾乎等同於他們的第一個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

UPS,你是對的。我編譯並運行了這個例子,它在兩個或三個secons之後掛起:S – 2013-03-21 16:14:21

回答

-1

用我自己的TCP服務器來測試,我看你的代碼,掛起,如果它不能連接到遠程服務器。

如果有一個運行TCP服務器,之後發送和從遠程服務器接收一些數據/,如果我關閉遠程服務器連接(關閉我的服務器)的服務器響應發送到stdout控制檯。

你是不是想與谷歌通過量的代理連接?

另一條線索......從波科::網:: SocketStream描述:

當使用從SocketStream格式輸入,始終確保 接收超時設置套接字。否則,您的程序可能會意外掛起 。

嘗試在您的代碼中使用try-catch塊來測試它是否啓動了一些異常。

好運

0

改爲使用Poco :: Net :: DialogSocket代替。