Название: Вопрос по передачи файлов по сети Отправлено: merke от Сентябрь 30, 2010, 16:35 Всем привет!
В общем есть клиент есть сервер! Они друг другу могут слать файлы. Шлю файлы паками по 1024 * 64 байта. Подскажите оптимальный ли это размер куска передаваемого за один раз? Или следует увеличить размер передаваемых кусков? Если да, то подскажите размер. Буду рад помощи! Название: Re: Вопрос по передачи файлов по сети Отправлено: crossly от Сентябрь 30, 2010, 19:08 что значит 1024*64... где это задается??
Название: Re: Вопрос по передачи файлов по сети Отправлено: merke от Октябрь 01, 2010, 03:45 Это размер куска, который считываеся с файла и передается по сокету принимающей стороне.
Название: Re: Вопрос по передачи файлов по сети Отправлено: navrocky от Октябрь 01, 2010, 10:02 Мне кажется оптимальный размер можно выяснить только экспериментальным путем, и он скорее всего будет зависеть от оборудования/ОС. Не имеет смысла делать меньше ethernet frame 1500байт )
Возможные варианты: 1) потестить самому выявить некую константу и забить ее гвоздем 2) дать возможность пользователю покрутить эту настройку 3) сделать автоподбор опимального значения Название: Re: Вопрос по передачи файлов по сети Отправлено: p166 от Октябрь 01, 2010, 12:24 Мне кажется оптимальный размер можно выяснить только экспериментальным путем, и он скорее всего будет зависеть от оборудования/ОС. Не имеет смысла делать меньше ethernet frame 1500байт ) Возможные варианты: 1) потестить самому выявить некую константу и забить ее гвоздем 2) дать возможность пользователю покрутить эту настройку 3) сделать автоподбор опимального значения ethernet frame на самом деле называется MTU (http://ru.wikipedia.org/wiki/MTU (http://ru.wikipedia.org/wiki/MTU)). На разных сетевых картах это значение может быть разным, но обычно оно равно 1500. Точное значение можно посмотреть в диспетчере устройств или через ifconfig. Максимальное значение определить можно только экспериментально, хотя если чтение идет в локальной гигабитной сети, то можно читать и мегабайтами без ущерба производительности. Название: Re: Вопрос по передачи файлов по сети Отправлено: Barmaglodd от Октябрь 01, 2010, 12:48 TCP или UDP? или ещё что?
Название: Re: Вопрос по передачи файлов по сети Отправлено: crossly от Октябрь 01, 2010, 13:54 а для чего вообще файл резать на куски... ??
Название: Re: Вопрос по передачи файлов по сети Отправлено: merke от Октябрь 01, 2010, 13:56 TCP! Потому что отослать файл размером 700 мб. нельзя за один раз!
Название: Re: Вопрос по передачи файлов по сети Отправлено: k06a от Октябрь 02, 2010, 13:29 Отправлять по 64*1024 врядли получится . . .
Ведь поле размера данных внутри заголовка IP занимает 2 байта и может принимать значения от 0 до (64*1024-1), а заголовки TCP имеет размер от 20 до 60 байт, UDP имеет размер 8 байт (включает 2 порта, размер и контрольную сумму) Таким образом: 1. При передаче по TCP можно рассчитывать на: (64*1024 - 1) - 60 = 65 475 байт 2. При передаче по UDP можно рассчитывать на: (64*1024 - 1) - 20 = 65 515 байт Я использую либо 63*1024, либо 64000. Название: Re: Вопрос по передачи файлов по сети Отправлено: navrocky от Октябрь 03, 2010, 00:34 К чему такое стремление к 64Кб не могу понять, TCP всё равно порежет хз как.
Название: Re: Вопрос по передачи файлов по сети Отправлено: alexcpp от Октябрь 03, 2010, 01:57 90% ответов - ни о чем.
к примеру: Цитировать но обычно оно равно 1500 Вряд-ли автор понимает, что 1500 - это не байты ;)Александр, прочтите это (http://en.wikipedia.org/wiki/Transmission_Control_Protocol). Все вопросы отпадут. Название: Re: Вопрос по передачи файлов по сети Отправлено: navrocky от Октябрь 03, 2010, 13:14 Что же это тогда если не байты - граммы чтоли? да и tcp тут причем когда речь шла об ethernet...
Цитировать 90% ответов - ни о чем. это да, слишком много факторов (пропускная способность канала, нагруженность, латентность, тип канала, скорость диска, скорость компа и т.д.), просчитать оптимальный объем имхо не получится, только подбор.. И еще добавлю что все эти оптимизации дадут едва заметный на глаз прирост в скорости, я бы не парился.. |