Вот метод на моей стороне сервера:
void send_err(int socket_fd, char *msg) {
/// To send an error message (`ERR`).
size_t len = strlen(msg);
printf("send_err: msg='%s' of size:%zu\n", msg, len);
INIT_HEAD_S(head_s, ERR, len);
send_header(socket_fd, &head_s, sizeof(cmd_header_t));
send_msg(socket_fd, msg, len * sizeof(char));
}
Я вызываю метод следующим образом: send_err(socket_fd, "»»»»»»»»» illogical REQ request.\0");
Сокет настроен правильно, а send_header
и send_args
методы работают нормально.
На стороне сервера printf
работает просто отлично, но strlen
не возвращает правильное значение (должно быть 33
, но это даетout 43
вместо).
На стороне клиента полученное сообщение не определено: иногда появляются странные дополнительные символы.По-видимому, добавление \0
вручную, по-видимому, фактически не добавляет NUL-символ в конец моей строки.
Как я должен это сделать? Я хочу, чтобы метод не требовал, чтобы человек считал, сколько символов он отправляет, так как это раздражает.