Re[6]: Сокеты vs Пайпы
От: Аноним  
Дата: 23.08.07 14:31
Оценка:
FM>Непомогло никак.
Прочитайте плз еще раз что я написад. Включение TCPNODELAY _значительно_замедляет_ передачу поткоа мелкими фрагментами
Re[4]: Сокеты vs Пайпы
От: Gomes Россия http://irazin.ru
Дата: 23.08.07 14:43
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Я как-то видел две тоненькие книженции 1 и 2-ю части про какую-то библиотеку для разработки клиент-серверных приложений, основанную на сокетах.


ACE?
Re[2]: Сокеты vs Пайпы
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 23.08.07 15:33
Оценка:
Здравствуйте, Аноним, Вы писали:

А>>В чем проблема?

А>Я по неопытности думал что сокеты это достаточно просто... оказалось все совсем наоборот... Тогда подскажите, раз такие грабли с сокетами, и они появились не сегодня ( и грабли и сокеты , может быть есть относительно доступные библиотеки в которых учтены все эти тонкости и на которых можно организовать наиболее эффективную работу сервера и клиента? Первоначально предпологалось выявить наиболее производительный способ связи между сервером и клиентом в локальной сети. Пайпы взяли чисто для сравнения, думая что сокеты это есть круто, но есть ощущение что это не совсем так..

Если необходимо передавать маленькими порциями в режиме вопрос-ответ в пределах локальной сети, то лучше использовать UDP.

Если не секрет что должны клиент и сервер передавать друг другу?
Re[5]: Сокеты vs Пайпы
От: freelancer.malma  
Дата: 23.08.07 17:45
Оценка:
Здравствуйте, Gomes, Вы писали:

G>Здравствуйте, Аноним, Вы писали:


А>>Я как-то видел две тоненькие книженции 1 и 2-ю части про какую-то библиотеку для разработки клиент-серверных приложений, основанную на сокетах.


G>ACE?

Она самая. Спасибо.
Re[6]: Сокеты vs Пайпы
От: Gomes Россия http://irazin.ru
Дата: 24.08.07 07:17
Оценка:
Здравствуйте, freelancer.malma, Вы писали:

FM>Она самая. Спасибо.


Но использовать какие-либо библиотеки только для связи _двух_ машин в локалке как-то не разумно. Тут элементарная задача на голых сокетах решаемая.
Re[7]: Сокеты vs Пайпы
От: freelancer.malma  
Дата: 24.08.07 08:55
Оценка:
Здравствуйте, Gomes, Вы писали:

G>Здравствуйте, freelancer.malma, Вы писали:


FM>>Она самая. Спасибо.


G>Но использовать какие-либо библиотеки только для связи _двух_ машин в локалке как-то не разумно. Тут элементарная задача на голых сокетах решаемая.


Вот и я так же поначалу думал...и столкнулся с вышеуказанными проблемами. Исходники есть, можете посмотреть..
Я так пока думаю в следующих направлениях попробовать действовать:
1. использовать UDP протокол.
2. Использовать более сложную асинхронную обвязку.
3. Использовать 2 соединения: 1 на прием , 1 на отправку.
Re[8]: Сокеты vs Пайпы
От: Gomes Россия http://irazin.ru
Дата: 24.08.07 09:48
Оценка:
Здравствуйте, freelancer.malma, Вы писали:

FM>Вот и я так же поначалу думал...и столкнулся с вышеуказанными проблемами. Исходники есть, можете посмотреть..

Да нет никаких проблем. В зависимости от потребностей надо поиграться с размером буферов и форматом протокола. Мельком глянув код я заметил что сначала передается размер, а потом сами данные. Попробуй слать их вместе. Быстрее ТСР на голых сокетах (даже синхронных) для этой задачи ничего не придумаешь.
Re[9]: Сокеты vs Пайпы
От: freelancer.malma  
Дата: 24.08.07 10:54
Оценка:
Здравствуйте, Gomes, Вы писали:

G>Здравствуйте, freelancer.malma, Вы писали:


FM>>Вот и я так же поначалу думал...и столкнулся с вышеуказанными проблемами. Исходники есть, можете посмотреть..

G>Да нет никаких проблем. В зависимости от потребностей надо поиграться с размером буферов и форматом протокола. Мельком глянув код я заметил что сначала передается размер, а потом сами данные. Попробуй слать их вместе. Быстрее ТСР на голых сокетах (даже синхронных) для этой задачи ничего не придумаешь.
Да, действительно немного помогло:

-------------- Режим клиента ---------------
Режим сокетов:
Передано 1000 блоков данных по 100 байт за 343 мс
Передано 1000 блоков данных по 1000 байт за 344 мс
Режим pipes:
Передано 1000 блоков данных по 100 байт за 15 мс
Передано 1000 блоков данных по 1000 байт за 31 мс
------------Client shutdown------------

Это после того как убрал один send\recv
-------------- Режим клиента ---------------
Режим сокетов:
Передано 1000 блоков данных по 100 байт за 188 мс
Передано 1000 блоков данных по 1000 байт за 187 мс
Режим pipes:
Передано 1000 блоков данных по 100 байт за 15 мс
Передано 1000 блоков данных по 1000 байт за 31 мс
------------Client shutdown------------

Но разница с пайпами все равно значительная..
Re[10]: Сокеты vs Пайпы
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 25.08.07 20:22
Оценка:
Здравствуйте, freelancer.malma, Вы писали:

FM>Здравствуйте, Gomes, Вы писали:


G>>Здравствуйте, freelancer.malma, Вы писали:


FM>>>Вот и я так же поначалу думал...и столкнулся с вышеуказанными проблемами. Исходники есть, можете посмотреть..

G>>Да нет никаких проблем. В зависимости от потребностей надо поиграться с размером буферов и форматом протокола. Мельком глянув код я заметил что сначала передается размер, а потом сами данные. Попробуй слать их вместе. Быстрее ТСР на голых сокетах (даже синхронных) для этой задачи ничего не придумаешь.
FM>Да, действительно немного помогло:

FM>-------------- Режим клиента ---------------

FM>Режим сокетов:
FM>Передано 1000 блоков данных по 100 байт за 343 мс
FM>Передано 1000 блоков данных по 1000 байт за 344 мс
FM>Режим pipes:
FM>Передано 1000 блоков данных по 100 байт за 15 мс
FM>Передано 1000 блоков данных по 1000 байт за 31 мс
FM>------------Client shutdown------------

FM>Это после того как убрал один send\recv

FM>-------------- Режим клиента ---------------
FM>Режим сокетов:
FM>Передано 1000 блоков данных по 100 байт за 188 мс
FM>Передано 1000 блоков данных по 1000 байт за 187 мс
FM>Режим pipes:
FM>Передано 1000 блоков данных по 100 байт за 15 мс
FM>Передано 1000 блоков данных по 1000 байт за 31 мс
FM>------------Client shutdown------------

FM>Но разница с пайпами все равно значительная..


Это передача по сети или на одном компе?

Вообще код с пайпами хотелось бы увидеть
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.