OpenSSL请求长度 - 如何计算大小?

时间:2011-03-21 18:22:04

标签: c openssl

我正在尝试在C中实现SSL客户端。根据给出的示例here(您可以直接看到源代码here),将“request_len”输入发送到SSL服务器计算为 -

request_len=strlen(REQUEST_TEMPLATE)+ strlen(host)+6; 

有人可以告诉我为什么“6”被加长?

1 个答案:

答案 0 :(得分:3)

它是端口号和空终结符的空间。端口范围为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);  

奖金信息:

他们然后再做一个strlen来找出请求有多大,因为端口可能少于5个字符。

request_len=strlen(request);  /* inefficient */

strlen不是必需的,因为snprintf()返回它构建的字符串的长度。

request_len = snprintf(request, request_len, REQUEST_TEMPLATE, host, port); /* efficient */