2014-09-17 6 views
0

Я был занят opensl и C под Microsoft, в настоящее время я получил многопоточный сервер и клиенты, которые обмениваются данными через SSL в сокете TCP/IP. «Мне потребовалось некоторое время, чтобы прочитать все документы/руководства от Openssl», но эй вы узнаете хотя бы что-то.OpenSSL Передача всех подключенных клиентов C

Теперь я хочу, чтобы сервер транслировал сообщение всем подключенным клиентам. Я не могу найти какую-либо информацию в Интернете, как это сделать, все для меня немного расплывчато или не документировано.

Если кто-либо из вас может предоставить мне руководство или что-нибудь, что связано с трансляцией для клиентов, это будет очень полезно.

Это не должно быть для microsoft, Linux/unix или всего, что может точно определить меня по правильному пути, было бы замечательно.

+0

Нет ни одного правильного пути, это полностью зависит от дизайна остальной части вашей программы и вашей модели ввода-вывода. Например, решения совершенно разные, если вы используете один поток и цикл событий, чем они, если вы используете поток для каждого клиента. –

+0

Забыл упомянуть, что у каждого клиента есть своя тема;) обновление квеста. – KittyKris

+0

SSL/TLS использует поток TCP (для повторных передач и заказа), поэтому он от одного источника до одного адресата. есть DTLS, чтобы иметь tls над UDP, но я не знаю, возможно ли даже иметь mutlicast/broadcast с ним. Но поскольку у вас столько потоков, что и у клиента, тогда ваша трансляция будет аппликативной трансляцией, то есть вы будете копировать ту же информацию, которая будет отправляться каждому клиенту. Я сомневаюсь, что что-нибудь в socket/OpenSsl BIO может помочь вам на более низком уровне. –

ответ

1

OpenSSL не поможет вам сделать это (например, широковещательное), либо с уровнем TLS, либо без него, ваша проблема такая же, как передача информации по нескольким сокетам TCP. Я не вижу другого способа, чем отправить ту же самую информацию обо всех клиентах.

+0

Смутный ответ, мог бы у меня указать, как я получу что-то, отправляемое нескольким клиентам? – KittyKris

+0

покажите мне свой код, я мог бы дать менее расплывчатый ответ. –

+0

Ну его простой чат-сервер P2P в настоящее время, просто нормальный материал. SSL работает нормально, пока он находится на сервере. Нет, я просто хочу, чтобы передать сообщение, как «Эй, чувак, мы будем перезагружать сервер» Это не UDP или что-нибудь подобного Приветствий – KittyKris

1

У TCP нет концепции вещания. Независимо от того, какие данные вы хотите «широковещать», необходимо отправить вручную на каждое отдельное TCP-соединение, которое вы установили. Тот факт, что вы используете OpenSSL, не имеет значения, поскольку трансляция не имеет ничего общего с самим SSL/TLS. Вам нужно будет отслеживать подключенных клиентов, а затем прокручивать их при необходимости отправлять ваши данные широковещания каждому клиенту по времени, точно так же, как вы отправляете любые другие данные, SSL/TLS или иным образом.

+0

Нет я упомянул я хочу вещать клиент SendToAll на потоке TCP/IP не UDP или что-то в этом роде;) – KittyKris

+0

То, что я сказал, все еще стоит. В TCP нет такой вещи, как трансляция. Вы должны отправлять свои данные широковещания каждому подключенному TCP-клиенту по одному за раз. –

+0

Его не «широковещательный протокол», он не использует 255.255.255.255 для отправки y stream, я просто хочу что-то вроде. Клиент 1 2 3 подключен к протоколу SSL к моей серверной программе. Я просто хочу послать туда Trough, что что-то идет не так. Как «EY GUYS в КОМНАТЕ, у меня просто была проблема» точно так же, как чат-сервер и клиент, которых вы изучили в школе :) Cheers – KittyKris

Смежные вопросы