В настоящее время в моем приложении C ++ я проверяю подлинность клиента, создавая простой запрос POST, затем отправляя его моему веб-серверу (все данные шифруются во время передачи) через сокет C ++, затем получая и обрабатывая ответ. Процесс создания соединения и отправки / получения ответа от моего сервера выглядит так:
(обработка ошибок и другой код был удален, все это важный код, относящийся к вопросу)
createSocket = socket(AF_INET, SOCK_STREAM, 0);
connect(createSocket, (struct sockaddr *)&sock_t, sizeof(sock_t));
send(createSocket, POSTRequestSend, strlen(POSTRequestSend), 0);
recv(createSocket, responseBuffer, 6000, 0);
Так что это прекрасно работает, но мой вопрос заключается в том, должен ли я применить какие-либо параметры сокетов с помощью setsockopt () к моему сокету? В связи с тем, что я получаю и отправляю только небольшие фрагменты данных, мне было интересно, есть ли какие-либо опции сокетов, которые могут помочь улучшить производительность, или есть ли какие-либо опции сокетов, которые я вообще должен использовать?
То есть Я видел несколько примеров того, как люди, создающие / отправляющие похожие запросы, применяли эти параметры сокетов:
int on = 1;
setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (const char *)&on, sizeof(int));
Так что, если бы я добавил это в свой код сокета, он бы выглядел так:
int on = 1;
createSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
setsockopt(createSocket, IPPROTO_TCP, TCP_NODELAY, (const char *)&on, sizeof(int));
connect(createSocket, (struct sockaddr *)&sock_t, sizeof(sock_t));
send(createSocket, POSTRequestSend, strlen(POSTRequestSend), 0);
recv(createSocket, responseBuffer, 6000, 0);
Будет ли какая-то польза от установки этих опций сокетов? Или есть какие-либо другие параметры сокетов, которые я должен использовать, основываясь на том, что я отправляю только запрос POST с небольшим количеством отправленных / полученных данных.
Задача ещё не решена.
Других решений пока нет …