В чем разница между TCP_NODELAY и MSG_DONTWAIT - PullRequest
1 голос
/ 30 января 2012

В чем разница между TCP_NODELAY и MSG_DONWAIT? Я понимаю, что один характерен для TCP, а другой - для общего параметра сокета при отправке, но эти два параметра ведут себя по-разному в разных сценариях? Точно так же, как TCP_NODELAY, MSG_DONTWAIT также отключает алгоритм Nagle?

Если говорить точнее, я пытаюсь отправить данные по локальной сети LAN и не хочу, чтобы мой сокет завис из-за какой-либо причины при отправке, я просто хочу, чтобы он отправил пакет и немедленно вернулся. какой из них лучше и надежнее, чтобы сделать это. (этот вопрос относится только к сокетам Linux)

1 Ответ

3 голосов
/ 30 января 2012

TCP_NODELAY здесь вам не поможет - алгоритм Nagle как раз о том, как данные буферизуются в стеке TCP до его выхода, и не повлияет на поток управления в вашей программе. То, что вам нужно, это неблокирующий сокет - отправка звонков будет немедленно возвращена, и вы можете запросить их позже, чтобы узнать, произошло ли что-то или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...