проблема бережливого программирования - PullRequest
0 голосов
/ 20 мая 2011

привет, я только начинаю программировать с помощью API.Я запускаю пример кода, но я не знаю, как запустить благотворительную программу.я просто сделал следующее:

код;

{#!/usr/local/bin/thrift --gen cpp

namespace cpp Test

service Something {
  i32 ping()
}

, чем выполнить команду thrift --gen cpp your_thrift_file.thrift

это сгенерирует семь файлов в имени папки gen-cppследующие:

Something.cpp
Something.h

Something_server.skeleton.cpp
your_thrift_file_constants.cpp
your_thrift_file_constants.h
your_thrift_file_types.cpp
your_thrift_file_types.h

теперь я скомпилирую их все вместе, чтобы получить исполняемый файл, выполнив следующую команду

g++ -Wall -I/usr/local/include/thrift -c Something.cpp -o something.o
g++ -Wall -I/usr/local/include/thrift -c Something_server.cpp -o server.o
g++ -Wall -I/usr/local/include/thrift -c your_thrift_file_constants.cpp -o constants.o
g++ -Wall -I/usr/local/include/thrift -c your_thrift_file_types.cpp -o types.o

, чем я пишу код клиента, следующий за

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

теперь, чем я скомпилирую его с помощью команды

g ++ -Wall -I / usr / local / include / thrift -c что-то_client.cpp -o client.o

а затем сделать исполняемый файл с помощью следующей команды

g ++ -L / usr / local / lib -lthrift client.o Something.o constants.o types.o -o Something_client

Но когда я запускаю его, он показывает следующую ошибку

команда: ./Somthing_client result: Thrift: Fri May 20 10:49:17 2011 TSocket :: open () connect () Соединение отклонено, разрываетсявызывается после создания экземпляра «apache :: thrift :: transport :: TTransportException», что (): connect () не удалось: ConnЭффект отклонен Прервано

Теперь я не понимаю, что я делаю не так?Кто-нибудь может объяснить мне экономную работу?как правильно запустить этот код?что делает этот код?

1 Ответ

1 голос
/ 15 ноября 2011

Ваш сервер Thrift тоже работает? Клиенту нужно что-то для подключения. Ошибка выглядит так, как будто нет открытого сокета на порту 9090 (установлен в вашем коде).

...