使用客户端访问C++服务器时出现问题C++

Problem accessing C++ server with C++ client

本文关键字:C++ 问题 服务器 客户端 访问      更新时间:2023-10-16

C++ 基于服务器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("pingn");
       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 

什么也没发生....就好像命令永远运行而不是终止一样......所以我不太确定如何进行。

感谢所有帮助。

这意味着

你应该首先运行./Something_server&(并将作业放在后台,这样它就不会使输出混乱)。然后你运行 ./Something_client,这显然会 ping 服务器。