首页 > 解决方案 > 如何在 C 中的彩色套接字上发送消息?

问题描述

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将彩色消息发送到套接字?

编辑:次要澄清(通过输出,我的意思是标准输出)

标签: csockets

解决方案


同样,颜色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);

推荐阅读