>>Передаётся небольшая структура. При аналезе (tcpdump..) выяснелось, что пару фрагментов >>остаются на клинтской части. Обидно. Приходиться закрывать соединение, а затем вновь подключаться, >>тогда те куски приходят без проблем. >>Идея понятна. Но как реализовать? > >Если есть необходимость передавать данные без задержек по tcp протоколу, то необходимо >отключить алгоритм Нигла в сокете. Этот алгоритм предотвращает большое количество мелких >пакетов в сети, которые излишне нагружают сеть и уменьшают её пропускную >способность. Этот алгоритм предотвращает посылку мелких пакетов путём ожидания добавление ещё >данных в буфер, т.е. данные отсылаются одним большим куском, или же >по истечении некоторого времени, которое может быть довольно большим. > >Чтобы отклюсить этот алгоритм, необходимо после создания сокета функцией socket(): > >setsockopt(s,IPPROTO_TCP,TCP_NODELAY,(char*)&t,sizeof(t)); Это конечно всё хорошо. Но я сомневаюсь, что с подобной проблемой, боряться таким образом. Как говориться это уже в крайнем случае. Да и идея у меня не в том что бы без задержек передовать данные, а чтоб последний фрагмент доставить. Спасибо.
|