2011-05-24 70 views
1

C++基於服務器Something_server服務器具有打印平問題訪問C++與C++客戶

#include "Something.h" 
#include <protocol/TBinaryProtocol.h> 
#include <server/TSimpleServer.h> 
#include <transport/TServerSocket.h> 
#include <transport/TBufferTransports.h> 

using namespace ::apache::thrift; 
using namespace ::apache::thrift::protocol; 
using namespace ::apache::thrift::transport; 
using namespace ::apache::thrift::server; 

using boost::shared_ptr; 

using namespace Test; 
     class SomethingHandler : virtual public SomethingIf { 
    public: 
     SomethingHandler() { 
     // Your initialization goes here 
     } 

     int32_t ping() { 
     // Your implementation goes here 
     printf("ping\n"); 
     return 0; 
     } 

    }; 

    int main(int argc, char **argv) { 
     int port = 9090; 
     shared_ptr<SomethingHandler> handler(new SomethingHandler()); 
     shared_ptr<TProcessor> processor(new SomethingProcessor(handler)); 
     shared_ptr<TServerTransport> serverTransport(new TServerSocket(port)); 
     shared_ptr<TTransportFactory> transportFactory(new TBufferedTransportFactory()); 
     shared_ptr<TProtocolFactory> protocolFactory(new TBinaryProtocolFactory()); 

     TSimpleServer server(processor, serverTransport, transportFactory, protocolFactory); 
     server.serve(); 
     return 0; 
    } 

Something_client應該調用此方法以打印出"ping"

#include "Something.h" // As an example 

#include <transport/TSocket.h> 
#include <transport/TBufferTransports.h> 
#include <protocol/TBinaryProtocol.h> 

using namespace apache::thrift; 
using namespace apache::thrift::protocol; 
using namespace apache::thrift::transport; 

using namespace Test; 

int main(int argc, char **argv) { 
    boost::shared_ptr<TSocket> socket(new TSocket("localhost", 9090)); 
    boost::shared_ptr<TTransport> transport(new TBufferedTransport(socket)); 
    boost::shared_ptr<TProtocol> protocol(new TBinaryProtocol(transport)); 

    SomethingClient client(protocol); 
    transport->open(); 
    client.ping(); 
    transport->close(); 

    return 0; 
} 

指示說「的方法運行服務器並用客戶端ping「......不知道這意味着什麼......

我做

./Something_server 

並沒有發生任何事情......就好像命令永遠在運行而沒有終止......所以我不太清楚如何繼續。

所有幫助表示讚賞。

+0

據我瞭解,你有兩個可執行文件。第一個是服務器,第二個是客戶端。你應該運行服務器。它永遠運行。然後運行客戶端,它會ping服務器,然後退出。在服務器的終端上,您應該看到一個「ping」輸出。我希望這有幫助。 – 2011-05-24 08:26:31

回答

3

這意味着您應該首先運行./Something_server &(&將作業置於後臺,以避免混亂輸出)。 然後你運行顯然ping服務器的./Something_client。

+0

真棒! &命令做到了!我在哪裏瞭解「&」以及類似的東西,並且是「ping」這類事情的標準術語? – algorithmicCoder 2011-05-24 08:49:56

+0

Ping:http://en.wikipedia.org/wiki/Ping,Unix命令行:http://www.amazon.com/Unix-Programming-Environment-Prentice-Hall-Software/dp/013937681X – Jas 2011-05-24 09:38:25