У меня есть клиент-серверная программа для передачи данных с использованием 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 ++.
Если я вас понимаю, вы хотите три программы, связанные следующим образом:
+--------+ +-----------+ +--------+ | Клиент | <---> | "Канал" | <---> | Сервер | + -------- + + ----------- + + -------- +
«Канальная» программа действует как полномочие между сервером и клиентами.
Чтобы это работало, вы должны создать программу «канал», которая будет действовать как сервер а также клиент. Он действует как сервер таким образом, что клиентские программы подключаются к нему вместо реального сервера. Когда программа «канал» получает новое клиентское соединение, она сама действует как клиент, подключающийся к реальному серверу.
Затем вы должны следить за парой сокетов (соединения клиента и сервера), чтобы при получении ввода от одного сокета вы обрабатывали его и отправляли обработанные данные на другой сокет. Поэтому, если клиент отправляет данные, вы получаете их в программе «канала» и выполняете любую необходимую обработку, а затем отправляете их на реальный сервер. И то же самое для обратного.
Других решений пока нет …