Проблема доступа к серверу C ++ с клиентом C ++ - PullRequest
1 голос
/ 24 мая 2011

C ++ Server Something_server имеет метод, который печатает ping

#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;
}

В инструкциях написано "запустить сервер и пинговать его с клиентом" .... не знаю, что это значит ...

Я

 ./Something_server 

и ничего не происходит .... как если бы команда выполнялась вечно и не заканчивалась ... поэтому я не совсем уверен, как действовать.

Вся помощь приветствуется.

1 Ответ

3 голосов
/ 24 мая 2011

Это означает, что вы должны сначала запустить ./Something_server & (& переводит задание в фоновый режим, чтобы не загромождать вывод).Затем вы запускаете ./Something_client, который, по-видимому, пингует сервер.

...