Всем привет! Суть в следующем: есть два компа, на первом есть область памяти (hMem1, 200 Kb), которая постоянно изменяется. На втором есть аналогичная область памяти (hMem2, 200Kb), в которую через определенные промежутки времени необходимо копировать данные из hMem1 первого компа. Но копировать необходимо максимально быстро. Варианты? Пробовал Winsock - терпимо, но хотелось бы более скоростной вариант. Пробовал сделать через PIPE (именованные каналы) - при локальном тестировании(на одной машине, имя канала \\.\) передача практически мгновенная. Как только тестирую через сеть (имя канала \\имя_машины\) - максимальный размер буфера падает до 65535 и приложение-сервер подвисает. Можно ли сделать файл в памяти на сервере (CreateFileMapping) и копировать туда hMem1, а на машине клиента подключиться к этому файлу и читать напрямую? В общем помогите советом пожалуйста.
Можете предоставить данные о скоростях? В частности, ширину канала ЛС и скорость передачи данных от одного компа другому методом сокетов..
хорошо, а кто мешает открыть TCP и UDP соединение, и контролировать доставку ручками. P.S. Хотя если последние не отличаются прямотой и правильным месторасположением, то это не устранимая проблема!
...ну а потом и масштабируемое окно и доставку внеочередную ещё дописать. Ба, це ж TCP! Что за маразм пишите? P.S. TS забил уже на тему а вы всё добавляете коменты...
да и можно собственный транспорт написать, по круче TCP/IP вообще на RAW сокетах чё уж там... глупо вообще - что TCP/IP, что UDP, что пайпы всё это одно и тоже скорость физического канала от этого не изменится - оптимизация кода есть истинна, имхо можно и на феррари ехать со скоростью 1 км/ч...
ну это ещё как сказать... охлаждение жидким азотом и вперёд - делать из хм... пентиума 4 1,7 ГГц пентиум 4 - 3,5 ГГц... а вообще речь не о том.. оптимизировать, оптимизировать! и ещё раз оптимизировать! как завещал нам великий Ленин!.. канеш из 100 мбпс 1к не сделать.. но минимизировать потери при обработке вполне возможно. З. Ы. Сорри за лирическое отступление.
а каковы они, ты хоть знаешь. при пропускной способности памяти в 8500-20000 Мб/с и пропускной способности шины ~10-30 Гб/с (цифры беру средние на данный момент. у моего компа память 17 Гб/с, проц 17,4 Гб/с судя по тестам из сандры 2007. это скорости передачи процессор-чипсет-память) и при способности проца обрабатывать этот поток данных? даже если очень захочешь, то и 100 Мб/с - это лишь часть возможности проца. даже если предположить, что ну очень не оптимальный код, то он вполне может забить 100 Мб канал и сосуществовать с 5-6 десятками других процессов! P.S. ну хорошо. вспомню про своего старичка P4, но даже у него в тестах 8,5 Гб/с проц и 6,4 Гб/с память. я только одного не понимаю, как можно написать так прогу, чтобы даже этого не хватило, для передачи потока данных? P.P.S. нет. ну хорошо. вспомню про своего старичка i486DX2, но даже у него (о боже) проц-память 400 Мб/с, правда там десятка стоит, и из нее вот уж точно 100 не сделаешь! и PCI там нет, только ISA, но уже тут...
да прекрастно понимаю и знаю.. но можно написать и сетевую прогу которая и на 1 гбпс будет тормозить и глючить... [+] хотя канеш согласен. с оптимизачией сетевых прог погорячился... но компрессию буфера данных перед передачей по сетке сделать можно было бы во всяком случае....