Я работаю над проектом, который является сервер-клиентским приложением на основе WinSock на C++. Я сделал все необходимое для связи между сервером и клиентом, с которым я могу отправлять и получать сообщения между ними.Клиентский обмен сообщениями в программировании сокетов
Теперь мне нужно знать, как выполнить клиентскую часть обмена сообщениями и как должна быть выполнена работа. Я знаю только, что, например, если клиент A и Клиент B должны связываться друг с другом, клиент A должен отправить сообщение на сервер, сервер получит сообщение и отправит его клиенту B.
Если это необходимо пожалуйста, помогите мне узнать, как сервер должен знать что-либо о получателе (который в данном случае является клиентом B)?
Пожалуйста, дайте мне знать, если я не четко объяснил свою проблему.
Любая помощь приветствуется.
То, как я это делал, было то, что каждый раз, когда клиент подключается к серверу, я предоставляю этому клиенту уникальный идентификатор. Всякий раз, когда другой клиент хочет отправить сообщение, он отправляет уникальный идентификатор получателя и сообщение. Сервер отправляет это сообщение клиенту с идентификатором, для которого предназначено сообщение. У меня была функция для «опроса» сервера для клиентов. Каждый раз, когда клиент подключался к серверу, я посылал команду каждому клиенту для обновления своего онлайн-списка. Когда клиент отключается, он отправляет команду каждому клиенту для обновления своего списка .. в основном, как msn-messenger. – Brandon
Это интересное решение. Но когда вы говорите: «Всякий раз, когда другой клиент хочет отправить сообщение, он отправляет уникальный идентификатор получателя и сообщение». Вы имеете в виду, что он отправляет два разных сообщения один для уникального идентификатора получателя, а другой для сообщения, или сообщение должно иметь оба информацию и каков формат сообщения? – user3530012
Я сделал свой собственный формат. Он прошел следующим образом: struct CMsg {unsigned long ID, Length, Command; char * Message;}; Я написал структуру в массив байтов и отправил ее на сервер. Сервер считывает идентификатор (sizeof (unsigned long)), затем длину, затем команду. Наконец, он читает количество символов «Длина» (сообщение). – Brandon