2016-05-14 10 views
0

Ich bin neu bei Apache Thrift und ich bin in einem College-Projekt, wo ich einen C++ - Server und einen C# -Client mit Apache Thrift verbinden muss.Verbinden Sie zwei physische Computer mit Apache Thrift

Ich kann beide verbinden, wenn sie im selben PC laufen. Von Anfang an, das Tutorial mit:

TTransport transport = new TSocket("localhost",9090); 
TProtocol protocol = new TBinaryProtocol(transport); 
Analizador.Client client = new Analizador.Client(protocol); 

Aber ich brauche sie zu trennen, eine in einem PC mit Linux und den anderen in einem PC Windows-ausgeführt wird, so sie beide im selben Netzwerk befinden. Wie oder wo muss ich konfigurieren, um dies zu ermöglichen?

Um genauer zu sein: Der Haupt-PC Windows ausgeführt wird und im Inneren ist eine virtuelle Maschine mit Ubuntu 16.04, die einen laufenden C++ Server mit hat:

int port = 9090; 
shared_ptr<AnalizadorHandler> handler(new AnalizadorHandler()); 
shared_ptr<TProcessor> processor(new AnalizadorProcessor(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(); 

Antwort

2

"localhost" gibt an, dass der Client eine Verbindung zum Server auf die gleiche Maschine. Öffnen Sie zuerst eine Eingabeaufforderung auf dem Windows-Computer und stellen Sie sicher, dass ping 192.168.56.1 funktioniert.

Wie JensG sagte, verwenden Sie den Code:

TTransport transport = new TSocket("192.168.56.1", 9090);

+0

Dank für Sie Antwort so, wenn meine virtuelle Maschine 192.168.56.1 die IP habe ich, dass in den lokalen Host atribute setzen müssen? –

+1

@EdwinAguilar: Ja, 'TTransport transport = new TSocket (" 192.168.56.1 ", 9090);' sollte tun, wenn die IP korrekt ist Wenn es immer noch nicht funktioniert, sollten Sie die Firewall-Einstellungen überprüfen. Der Name 'localhost' ist nur eine [Kurzbezeichnung für den lokalen Rechner, oder' 127.0.0.1'] (https://en.wikipedia.org/wiki/Localhost). – JensG