【发布时间】:2020-11-14 08:25:38
【问题描述】:
如何在java中使用TThreadedSelectorServer的TBufferedTransport?
在 Python 客户端中:
self.tsocket= TSocket.TSocket(self.host, self.port)
self.transport = TTransport.TBufferedTransport(self.tsocket)
protocol = TBinaryProtocol(self.transport)
client = Handler.Client(protocol)
self.transport.open()
在 Java 服务器中
TNonblockingServerSocket serverTransport = new TNonblockingServerSocket(port);
TProcessor tprocessor = new ExecutionService.Processor<ExecutionService.Iface>(handler);
TThreadedSelectorServer.Args tArgs = new TThreadedSelectorServer.Args(serverTransport);
tArgs.processor(tprocessor);
tArgs.protocolFactory(new TBinaryProtocol.Factory());
this.server = new TThreadedSelectorServer(tArgs);
Python 客户端使用 TBufferedTransport,Java 服务器使用 TFramedTransport。导致异常:
AbstractNonblockingServer$FrameBuffer Read an invalid frame size of -2147418111. Are you using TFramedTransport on the client side?
由于某些原因,客户端无法修改,所以想将java服务器修改为TBufferedTransport。 java中如何使用TThreadedSelectorServer的TBufferedTransport? 谢谢!!!
【问题讨论】: