канал для клиент-серверного приложения

У меня есть клиент-серверная программа для передачи данных с использованием windsock, но мне нужно что-то вроде клиента-канала-сервера, на котором канал будет получать запрос из клиники или сервер будет обрабатывать его, а идентификатор в это время канал занят, он будет хранить этот запрос в очереди. Я хочу канал в качестве отдельного приложения. У меня есть небольшое представление об этом, как:

class ch {

void getdata{
//to recieve data
}

void putdata{
//to send data
}

void queue{
//to store if channel is busy now
}

private:
void dataaddress;
double datasize;

}

Я думал сделать это как другое приложение или как файл dll, но я понятия не имею, как сделать это с файлом dll и другим, если я сделаю это с сокетом, он будет таким же, как клиент или сервер. Так есть ли лучший способ сделать это или где-то начать? я знаю о boost: asio и других библиотеках, но мне нужно что-то в стандартных библиотеках c ++.

0

Решение

Если я вас понимаю, вы хотите три программы, связанные следующим образом:

+--------+       +-----------+       +--------+
| Клиент | <---> | "Канал" | <---> | Сервер |
+ -------- + + ----------- + + -------- +

«Канальная» программа действует как полномочие между сервером и клиентами.

Чтобы это работало, вы должны создать программу «канал», которая будет действовать как сервер а также клиент. Он действует как сервер таким образом, что клиентские программы подключаются к нему вместо реального сервера. Когда программа «канал» получает новое клиентское соединение, она сама действует как клиент, подключающийся к реальному серверу.

Затем вы должны следить за парой сокетов (соединения клиента и сервера), чтобы при получении ввода от одного сокета вы обрабатывали его и отправляли обработанные данные на другой сокет. Поэтому, если клиент отправляет данные, вы получаете их в программе «канала» и выполняете любую необходимую обработку, а затем отправляете их на реальный сервер. И то же самое для обратного.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]