我正在开发一个基本的配对服务器。基本流程是这样的:
- 客户端连接到服务器,报告客户端的名称和他们正在寻找的匹配类型
- 服务器报告所有可能的匹配
- 客户选择他/她想要配对的匹配项
- 服务器匹配两个客户端
问题是,每次客户端连接时,我都需要向该新客户端报告所有可能的匹配项,并将所有可能的匹配项报告给该新连接客户端(因此,在不匹配的情况下,客户端必须始终准备好recv
从服务器访问)。同时,客户端可以随时选择匹配或断开连接(因此客户端必须始终准备好,send
服务器必须准备好recv
)
我怀疑这个问题的真正解决方案是使用线程,一个recv
用于客户端和服务器的后台线程,以及一个主用户交互send
线程。
所以我有两个与此相关的问题:
- 它是否在不同线程上同时保存到
send
同一个套接字连接?recv
- 这甚至是处理这个问题的正确方法吗?
(标记为 C++ 和 obj-c,因为服务器是用 C++ 构建的,客户端是 obj-c)