Передача данных по сети linux

У меня вопрос. Я сделал клиента и сервер. мой сервер добавляет каждого нового клиента в epoll события. клиент отправляет данные json с вопросом, есть ли обновления. если есть обновления, то сервер добавляет в std::list<ClientDownloader> сокет и информацию о файле, размер, название и т.д.. потом в отдельном потоке проверяется этот std::list каждую секунду. если в списке например десять клиентов. то он в цикле бесконечном цикле, пока в списке есть клиенты, передает файл обновления. то есть в каждой итерации отдает порцию данных по 16384 байта. так можно например отдавать обновление сразу сотням клиентов. когда весь файл передан, то закрывается epoll для этого клиента и сокет, а также файл. в общем и удаляется из std::list. и вот в чем проблема. мы загрузили клиентов на некоторые сервера(компьютеры). их программы клиенты проверяют обновление и скачивают всего два раза порцию данных и в общем счеты выходит всего 32768. это два раза передалось с помощью write данные. но файл занимает больше места. на моем компьютере этот же клиент стоит и когда об просит обновление, то обновляется без проблем. то есть сколько я не проверял, у меня обновлялось всё нормально и на 18.04 и на 20.04 ubuntu. может функцию write заменить на send, но вроде толку от этого нет. сделал ещё клиента на qt, и он принимает несколько порций всего данных, не весь файл принимает. в чем может быть проблема? вот сервер загружает клиентам файл обновления.


Ответы (0 шт):