2015-02-02 2 views
4

나는 Apache Thrift tutorial for Java을 실행 중입니다.2 개의 클라이언트를 사용할 때 Apache Thrift 자습서 클라이언트가 멈 춥니 다 - 서버를 멀티 태스킹하는 방법?

두 개의 클라이언트 프로세스를 동시에 실행하는 경우 서버는 두 번째 클라이언트를 허용하지 않습니다. 첫 번째 클라이언트가 완료된 후에 만 ​​두 번째 클라이언트가 서버에 승인됩니다.

아무도 무슨 일이 일어 났는지 설명 할 수 있습니까?

서버를 여러 스레드에서 여러 연결을 허용하도록하려면 어떻게합니까?

답변

2

아무도 무슨 일이 일어 났는지 설명 할 수 있습니까?

이미 발견 : TSimpleServer은 한 번에 하나의 연결 만 허용합니다. 첫 번째 클라이언트의 연결이 끊어지면 다시 사용할 수 있습니다.

어떻게 서버를 여러 스레드에서 여러 연결을 허용 할 수 있습니까?

threading servers 중 하나를 사용하십시오. fits your use case best 중 하나를 사용하십시오.

주의 some of the servers require the client to use TFramedTransport 그 해주십시오.

1

다른 답변을 바탕으로 아래에 여러 클라이언트를 동시에 실행할 수 있도록하는 코드가 나와 있습니다.

서버 (단순) :

CalculatorHandler handler = new CalculatorHandler(); 
Calculator.Processor processor = new Calculator.Processor(handler); 
TNonblockingServerSocket serverTransport = new TNonblockingServerSocket(9090); 
THsHaServer.Args args = new THsHaServer.Args(serverTransport); 
args.processor(processor); 
args.transportFactory(new TFramedTransport.Factory()); 
TServer server = new THsHaServer(args); 
server.serve(); 

클라이언트 :

transport = new TSocket("localhost", 9090); 
transport.open(); 
TProtocol protocol = new TBinaryProtocol(new TFramedTransport(transport)); 
Calculator.Client client = new Calculator.Client(protocol); 
perform(client);