Я пытаюсь проверить, что моя настройка TCP_NODELAY работает, читая ее после того, как я ее установил.Чтение TCP_NODELAY с использованием getsockopt, возвращающего странное значение
Im устанавливает значение в '1', но когда я его прочитаю, его значение устанавливается на '4'. Я боюсь, что я что-то сделаю неправильно.
Heres мой код:
int tcpBefore;
socklen_t tcpBeforeLen = sizeof(tcpBefore);
int res = getsockopt(socket, IPPROTO_TCP, TCP_NODELAY, &tcpBefore, &tcpBeforeLen);
// Turn on TCP no delay
int tcpNoDelay = 1;
res = setsockopt(socket, IPPROTO_TCP, TCP_NODELAY, (void *)&tcpNoDelay, sizeof(tcpNoDelay));
int tcpAfter;
socklen_t tcpAfterLen = sizeof(tcpAfter);
res = getsockopt(socket, IPPROTO_TCP, TCP_NODELAY, &tcpAfter, &tcpAfterLen);
Значение я получаю для 'tcpBefore' является '0'. Значение, которое я получаю после установки, равно «4». Это кажется странным.
Есть ли что-то, что я делаю неправильно?
И 'res == 0' после каждого звонка? – trojanfoe
Да, res всегда 0 – Mash