Как отправить сообщение на розетку в цвете C? - PullRequest
0 голосов
/ 30 апреля 2018

В utils.h У меня есть следующие цветовые коды:

#define RED   "\x1B[31m"
#define GRN   "\x1B[32m"
#define YEL   "\x1B[33m"
#define BLU   "\x1B[34m"
#define MAG   "\x1B[35m"
#define CYN   "\x1B[36m"
#define WHT   "\x1B[37m"
#define RESET "\x1B[0m"

А в main.c я отправляю сообщения на несколько сокетов вот так:

send(client_socket[caller], messageToCaller, strlen(messageToCaller), 0);

Я знаю, что можно печатать на стандартный вывод с использованием (например) printf(RED "test message\n" RESET);, но есть ли удобный способ использовать send для отправки цветных сообщений в сокеты?

Редактировать: незначительное уточнение (под выводом я имел в виду стандартный вывод)

1 Ответ

0 голосов
/ 30 апреля 2018

Точно так же цвет с printf() обрабатывается вашей оболочкой. Если вы отправите правильный байт-код в сокет и напечатаете его в оболочке, совместимой с этим кодом. Это должно работать без проблем.

Впрочем, я впервые вижу, что кто-то хочет это сделать, и это очень странно;)

// send side

#define X (RED "test message\n")
send(client_socket[caller], X, sizeof X - 1, 0);
#undef X

// recv side

ssize_t n = recv(...);
if (n < 0) { /* error */ }
buffer[n] = '\0';
printf("%s", buffer);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...