首页 > 解决方案 > 有没有办法只允许一个线程使用套接字?

问题描述

我目前正在一个程序上使用 HSM,其中我有一个使用套接字的多线程客户端-服务器应用程序。

它是这样工作的:
服务器的主线程等待并接受 N 个客户端,每次来自客户端的新请求到达时,都会创建一个新线程,客户端必须在其中验证自己(使用登录名),然后新套接字绑定到该通信。


由于安全规范,我需要只有经过身份验证的客户端才能与服务器通信,我假设这种情况:
客户端client1验证自己,并绑定一个新的套接字(例如 id=1234)。另一个client2 未经过身份验证的客户端看到它client1正在使用套接字 1234,因此client2开始使用套接字 1234 与服务器通信,即使它未经过身份验证。

这种情况会发生吗?
如果可以的话,我的想法是允许以某种方式只使用一次套接字,这样只有第一个连接到它的客户端(经过身份验证的客户端)可以使用它。有没有办法做这样的事情?我应该考虑其他想法吗?

标签: c++multithreadingsockets

解决方案


推荐阅读