java - Apache Thrift Python-Java 'Connection Refused'

标签 java python windows networking thrift

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

我已经在 Python (PyPy) 上编写了一个服务器。我还编写了一个有效的引用客户端。

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

这是怎么回事? (最近我还发现了一个解决这个问题的问题 https://issues.apache.org/jira/browse/THRIFT-1888 )

附言。使用 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()

最佳答案

我遇到了同样的问题。 用 ip 替换“localhost”修复它。

原因是:Python使用的是TCPV6,而Java使用的是TCP。

python : transport = TSocket.TServerSocket(host="127.0.0.1", port = 9091)

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

关于java - Apache Thrift Python-Java 'Connection Refused',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16760741/

相关文章:

c# - 使用 LOGON32_LOGON_NEW_CREDENTIALS 模拟 Windows 有什么魔力?

java - 使用 SharedPreferences 和 Editor 作为成员

java - 当我尝试删除实体时,必须管理实体以调用删除

python - 在单元测试中模拟python类并验证实例

python - 替换数据框列中日期的日期

c# - Windows XP 中的文件创建是原子的吗?

windows - TEdit 可以显示彩色表情符号吗?

java - SableCC 期待 : EOF

java - 哪个快 : store 10^5 size array in android app and search in it or fire queries of search and get data from database

python - 嵌套 if 条件以在 pandas 数据框中创建新列