C++ OpenSSL广播所有连接到C的客户端

C++ OpenSSL广播所有连接到C的客户端,c++,c,openssl,C++,C,Openssl,我一直忙于微软的openssl和C,目前我得到了通过TCP/IP套接字上的SSL进行通信的多线程服务器和客户端。“我花了一些时间阅读了Openssl的所有文档/手册”,但你至少学到了一些东西 现在,我希望服务器向所有连接的客户端广播一条消息。我在互联网上找不到任何关于如何做到这一点的信息,对我来说,一切都有点模糊,或者没有那么好的记录 如果你们中有人能给我提供一本手册或任何与向客户广播有关的东西,那将非常有帮助 它不一定是针对microsoft、Linux/unix或任何能够以正确方式指出我的东

我一直忙于微软的openssl和C,目前我得到了通过TCP/IP套接字上的SSL进行通信的多线程服务器和客户端。“我花了一些时间阅读了Openssl的所有文档/手册”,但你至少学到了一些东西

现在,我希望服务器向所有连接的客户端广播一条消息。我在互联网上找不到任何关于如何做到这一点的信息,对我来说,一切都有点模糊,或者没有那么好的记录

如果你们中有人能给我提供一本手册或任何与向客户广播有关的东西,那将非常有帮助


它不一定是针对microsoft、Linux/unix或任何能够以正确方式指出我的东西,这将是非常棒的

OpenSSL不会帮助您做到这一点(即广播),无论是否使用TLS层,您的问题都与通过多个TCP套接字广播信息相同。除了在所有客户机上发送完全相同的信息,我看不到任何其他方法。

TCP没有广播的概念。您想要“广播”的任何数据都必须手动发送到您建立的每个TCP连接。您正在使用OpenSSL这一事实与此无关,因为广播与SSL/TLS本身无关。您必须跟踪已连接的客户端,然后在需要时通过它们循环一次向每个客户端发送广播数据,就像发送任何其他数据(SSL/TLS或其他)一样。

没有一种正确的方法,它完全取决于程序的其余部分和I/O模型的设计。例如,如果您使用一个线程和一个事件循环,则解决方案与每个客户端使用一个线程时完全不同。忘记提到每个客户端都有自己的线程;)更新questingSSL/TLS依赖于TCP流(用于重新传输和排序),因此它是从一个源到一个目标的。有DTL可以通过UDP进行tls,但我不知道是否可以通过它进行mutlicast/broadcast。但是,由于您的线程数与客户端的线程数相同,因此您的广播将成为应用程序广播,即您将为每个客户端复制要发送的相同信息。我怀疑socket/OpenSsl BIO中的任何东西都不能在较低的级别上帮助您。@KittyKris那么您的问题基本上是,“我有一堆线程,如何让它们都做些什么?”@DavidSchwartz是的,这就是我想要归档的内容。OpenSSL库非常模糊,示例太少,无法找到我想要修复的东西。但是如果这不可行,我会想出其他方法来加密我的数据。不,我说过我想在tcp/ip流上向所有客户端广播发送消息,而不是UDP或类似的;)我说的话仍然有效。TCP中没有广播这样的东西。您必须自己一次一个地将广播数据发送到每个已连接的TCP客户端。这不是“广播协议”,它不使用255.255.255.255发送y流,我只是想要类似的东西。客户端1 2 3通过SSL连接到我的服务器程序。我只想通过那里的联系告诉我出了什么问题。就像“房间里的伙计们,我刚刚遇到了一个问题”,就像你在学校学到的聊天服务器和客户端:)干杯再次强调,你必须跟踪连接到你的服务器的客户端,然后服务器可以在需要时向每个客户端发送相同数据的副本。将客户放入列表中。循环浏览列表。向列表中的每个客户端发送相同的数据。到底有什么是不清楚的?这是在TCP中实现这一点的唯一方法。SSL与该逻辑无关,但每个客户端都将使用其自己的SSL会话来加密服务器决定发送给该客户端的任何数据。回答含糊不清,你能告诉我如何将内容发送给多个客户端吗?显示你的代码,然后我可以提供一个不那么含糊的答案。目前这是一个简单的P2P聊天服务器,只是普通的东西。SSL在对等服务器时工作正常。不,我只是想广播一条信息,比如“嘿,伙计,我们要重新启动服务器了”不是UDP之类的,干杯