Мое приложение, работающее на Solaris, должно вовремя отправлять пакеты tcp клиенту, но иногда пакеты отправляются с задержкой. Я знаю, что могу создать сокет с TCP_NODELAY для решения проблемы, но код нельзя изменить. Может ли кто-нибудь сказать мне, где мне установить TCP_NODELAY на ON в Solaris (любая версия). Поддерживает ли Solaris этот параметр. Я поискал в руководстве, но не нашел никакой полезной информации.
Solaris поддерживает TCP_NODELAY в качестве параметра сокета, который вы можете установить в коде - нет глобальной настройки, которая бы принудительно включала его для всех подключений. Лучшее, что я могу придумать, - это написать небольшой модуль LD_PRELOAD, который вставляется в socket () или connect () для вызова необходимого getsockopt ().
Вы не можете исправить код, не изменив его. Вы не найдете настоящего решения, потому что проблема в коде, а вы не хотите его менять. Существуют правила, которые необходимо соблюдать при передаче исходящих данных в стек TCP, и если код не следует им, он получит задержку в 200 мс. Так работает TCP - он не гарантирует своевременную передачу.