【发布时间】:2015-11-14 04:03:06
【问题描述】:
我在线程和套接字方面遇到了一些同步问题。我需要一个线程来接收套接字上的传入连接(并记住要响应的客户端数据)和其他线程来设置帧并将当前帧发送到列出的客户端。所以我想知道是否有可能(有点)将我的数据帧放入服务器套接字,这样每个人都可以在服务器不知道的情况下从套接字读取当前帧。
服务器只会用一些数据向其套接字发送垃圾邮件,而客户端将在没有服务器操作的情况下获取数据。这可能吗?怎么样?
我目前的做法很混乱,我不喜欢:
- 服务器正在一个线程上监听传入的传输,并在接收到这些数据后,将客户端数据添加到列表中。
- 在其他线程服务器上正在向列表中的所有客户端发送数据。
编辑:
我想将数据发送到允许客户端读取的某种缓冲区。 (客户端不必读取服务器发送的所有消息,仅在客户端请求时包含一个缓冲区),如果可能的话,我不希望服务器注意到客户端正在从缓冲区读取。
现在线程使用 uniqe_lock 同步
【问题讨论】:
-
您的问题很难理解:您是否尝试将相同的数据传输给多个客户端,并且希望一次性发送,而不是每次都重复发送?
-
您能提供一个mvce 吗?
-
在考虑套接字之前,请描述你想要什么。到目前为止我所理解的是:1.客户端连接到服务器,并说它想要数据2.服务器为该客户端准备一个框架3.客户端回来读取自己的数据。我猜不到的是:如何通过 IP 识别客户端(它们是?)?凭身份证?他们是否读取自己的数据或所有数据或最后一个数据(所有客户端都相同)。设计应该不难......一旦我们知道了预期!
标签: c++ multithreading sockets