我必须设计一个能够向许多客户端发送相同对象的服务器。如果客户端想要更新数据库中的某些内容,则可以向服务器发送一些请求。
令人困惑的事情:
我的服务器应该启动程序(我执行某些操作并生成'结果',这将发送给客户端)。
我的服务器应该监听来自客户端的传入连接,如果它应该接受并开始发送“结果”。
服务器应该接受尽可能多的客户端(不超过100个)。
我的结果'应该得到保障。我不希望有人拿我的'结果'并看看我的程序逻辑是什么样的。
我认为第1点是一个主题。第2点是另一个线程,它将在其范围内创建多个线程来为点3提供服务。第4点应由我的应用程序逻辑进行,同时序列化结果'而不是服务器。
这是个坏主意吗?如果是这样我可以在哪里改进?
由于
答案 0 :(得分:1)
将每个连接放在一个线程上是非常糟糕的,并且显然是初学者常犯的错误。每个线程花费大约1 MB的内存,这将使你的程序过度使用是没有充分理由的。之前我确实问了同样的问题,我得到了a very good answer。我使用了boost ASIO,服务器/客户端项目已经完成了几个月,现在它已经成为一个正在运行的项目。
如果您使用C ++和SSL(以保护您的连接),没有人会看到您的逻辑,因为您的程序已编译。但是在这种情况下你必须编写自己的通信协议/序列化。