Это место для номера порта и нулевого терминатора. Порт находится в диапазоне 0-65535, так что это до 5 символов. И строка должна заканчиваться 1-символьным нулевым терминатором. Так что 5 + 1 = 6
.
Чтобы понять это, вы должны посмотреть, где они заполняют запрос. Я разложил это так, чтобы вы могли видеть, как выстраиваются аргументы. Внутри REQUEST_TEMPLATE находится %s
, который заменяется хостом, и %d
, который заменяется портом.
request_len = strlen(REQUEST_TEMPLATE) + strlen(host) + 6;
... | | |
snprintf(request,request_len, REQUEST_TEMPLATE, host, port);
Информация о бонусе:
Затем они выполняют еще одну проверку, чтобы выяснить, насколько велик запрос, потому что порт мог содержать менее 5 символов.
request_len=strlen(request); /* inefficient */
В strlen нет необходимости, поскольку snprintf () возвращает длину построенной строки.
request_len = snprintf(request, request_len, REQUEST_TEMPLATE, host, port); /* efficient */