У меня сейчас базовая настройка клиент / сервер. Сервер должен принимать запросы от клиента (ов) и должен отвечать на сообщения разных типов. Примером запроса клиента может быть получение списка доступных файлов, сколько других клиентов подключено к серверу и т. Д.
Я бы, очевидно, должен был найти способ определить тип сообщения из сообщения, полученного от отправителя. Мне было интересно, если у меня есть структура, определенная с необходимыми данными, могу ли я привести структуру к void *, отправить ее как через системный вызов send (sockfd, message, length, flags), а затем на стороне получателя - вернуться к структуре. Это, конечно, предполагает, что я запускаю клиент и сервер в одной среде.
Например, если у меня есть следующая структура:
struct message {
enum messageType { GET_FILES, GET_CLINET_NUMBER} messageType,
}
и используйте эту структуру для отправки сообщения следующим образом
struct message msg;
msg.messageType = GET_FILES;
send(server_sockfd, (void*)&msg, sizeof(struct), 0)
и на приемнике
recv(,msg_buffer);
struct message received = (struct message*)msg_buffer;
Игнорируя незначительные синтаксические проблемы, кто-нибудь может посоветовать, возможна ли эта схема? Если нет, есть ли другой способ передать сообщение, не отправляя raw char *?