Apache Thrift Python-Java'拒绝连接'

我最近尝试使用Thrift将Python连接到Java。

我已经在Python(PyPy)上编写了一个服务器。 我也写了一个参考客户端的工作。

然后我写了一个Java客户端,它只产生一个“连接被拒绝”exception。

这有什么问题? (最近我还发现一个封闭的问题,具有这个问题https://issues.apache.org/jira/browse/THRIFT-1888 )

PS。 使用Thrift 0.9版本,PyPy 2.0 beta 2,Java 1.7.0_11

test.thrift

namespace java com.test namespace python test service TestPing { void ping() } 

Python服务器代码

 class TestPingHandler: def ping(self): pass handler = TestPingHandler() processor = TestPing.Processor(handler) transport = TSocket.TServerSocket(port=9091) tfactory = TTransport.TBufferedTransportFactory() pfactory = TBinaryProtocol.TBinaryProtocolFactory() server = TServer.TThreadedServer(processor, transport, tfactory, pfactory) print 'Starting the server...' server.serve() print 'done.' 

Java客户端代码

 TTransport transport; transport = new TSocket("localhost", 9091); transport.open(); TProtocol protocol = new TBinaryProtocol(transport); client = new TestPing.Client(protocol); client.ping(); 

参考Python客户端代码

 transport = TSocket.TSocket('localhost', 9091) transport = TTransport.TBufferedTransport(transport) protocol = TBinaryProtocol.TBinaryProtocol(transport) client = TestPing.Client(protocol) transport.open() client.ping() transport.close() 

Solutions Collecting From Web of "Apache Thrift Python-Java'拒绝连接'"

我遇到过同样的问题。 替换“本地主机”与IP固定它。

原因是:Python使用TCPV6,其中Java使用TCP。

Python: transport = TSocket.TserverSocket(host="127.0.0.1", port = 9091)

Java: transport = new TSocket("127.0.0.1", 9091);

 transport = new TSocket("localhost", 9091); TProtocol protocol = new TBinaryProtocol(transport); transport.open(); This should work...