设计一个多客户端 - 服务器应用程序,客户端不经常发送消息

时间:2016-10-07 14:45:42

标签: c++ design-patterns serialization server

我必须设计一个能够向许多客户端发送相同对象的服务器。如果客户端想要更新数据库中的某些内容,则可以向服务器发送一些请求。

令人困惑的事情:

  1. 我的服务器应该启动程序(我执行某些操作并生成'结果',这将发送给客户端)。

  2. 我的服务器应该监听来自客户端的传入连接,如果它应该接受并开始发送“结果”。

  3. 服务器应该接受尽可能多的客户端(不超过100个)。

  4. 我的结果'应该得到保障。我不希望有人拿我的'结果'并看看我的程序逻辑是什么样的。

    我认为第1点是一个主题。第2点是另一个线程,它将在其范围内创建多个线程来为点3提供服务​​。第4点应由我的应用程序逻辑进行,同时序列化结果'而不是服务器。

    这是个坏主意吗?如果是这样我可以在哪里改进?

  5. 由于

1 个答案:

答案 0 :(得分:1)

将每个连接放在一个线程上是非常糟糕的,并且显然是初学者常犯的错误。每个线程花费大约1 MB的内存,这将使你的程序过度使用是没有充分理由的。之前我确实问了同样的问题,我得到了a very good answer。我使用了boost ASIO,服务器/客户端项目已经完成了几个月,现在它已经成为一个正在运行的项目。

如果您使用C ++和SSL(以保护您的连接),没有人会看到您的逻辑,因为您的程序已编译。但是在这种情况下你必须编写自己的通信协议/序列化。