Thrift客户端-服务器多角色

3 投票
2 回答
2988 浏览
提问于 2025-04-15 20:51

这是我第一次提问,如果格式不对请见谅!

我正在尝试制作一个Thrift服务器(用Python写)和客户端(用C++写)。但是我需要在两个方向上交换消息。客户端应该注册(调用服务器的函数并等待),而服务器需要在同一个端口上监听N(N-> 100k)个连接(客户端)。在满足一些条件后,服务器需要调用每个客户端的函数,收集结果并进行解释。

我有点困惑,首先我想问“这可以在Thrift中实现吗”?第二个问题是关于如何实现双向通信的机制。我想我需要两个服务,一个是客户端的函数,另一个是服务器的函数。但我对调用代码感到困惑。我理解单向通信(从服务器调用函数),但在客户端调用函数时我遇到了问题。

有什么建议吗???

谢谢!

2 个回答

1

因为你说你在客户端调用函数时遇到了问题,这里有一段示例代码,使用Java作为服务器,C++作为客户端,客户端会调用服务器上的一个函数。你可以在这个链接找到相关内容:http://fundoonick.blogspot.com/2010/06/sample-thrift-program-for-server-in.html

希望这对你有帮助 :)

1

可以考虑使用boost::asio来处理你的客户端,不过根据你对C++的熟悉程度,代码可能会显得有点复杂。

如果你想找一个简单的例子,可以看看这个链接: http://www.linuxhowtos.org/C_C++/socket.htm

这个链接里有服务器端和客户端的代码。两边都会创建一个“套接字”,通过这个套接字实现双向通信。服务器端通常是多线程的,也就是说每个连接会有一个线程来处理。客户端可以用一个单线程的循环来实现,它会交替进行几个步骤:查询套接字有没有新信息、进行一些计算,然后把结果发回套接字。

撰写回答