Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> pipe 
:(
    Опции темы
zss
Дата 7.3.2006, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 708
Регистрация: 17.6.2004

Репутация: 1
Всего: 2



пробовал клиент-сервер на сокетах - там вроде все болие менее понятно.
Пакет с запросом- пакет с ответом.

С пайпами же можно работать как с объектом ввода-вывода ОС.
На сколько я понимаю определенного интерфейса не существет.

1. Если сервер постоянно пишет в пайп. Сколько он может записать ?(ограничения размером памяти, размером жесткого диска, или еще чем)
2.Все операции с пайпом схожи с файлами - можно ли синхронизировать чтение - запись?
3.Можно ли ограничить подключения к пайпу ? (или это можно сделать солько со стороны клиента при открытии файла с определенными правами)
4. Где можно подробно почитать об этом (желательно не только о пайпах, но и обо всех возможных средствах межпроцессорного взаимодействия). Особенно об ассинхронных операциях

P.S. Особенно меня очень интерисует поддерживает ли пайп транзакцию. Тоесть если в момент записи 100 байт я начинаю читать - гарантируется ли чтение 100 байт или я могу прочитать меньше ?

Это сообщение отредактировал(а) zss - 8.3.2006, 00:30
PM MAIL ICQ   Вверх
_hunter
Дата 9.3.2006, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



ответы на все ( ну или почти все ) вопросы -- в MSDN...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Janus
Дата 9.3.2006, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 186
Регистрация: 26.9.2005

Репутация: нет
Всего: 1



А возможны ли пайпы средствами самого C++, без API.
--------------------
Проект "Репликатор" 
PM MAIL   Вверх
Romikgy
Дата 9.3.2006, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



Имхо нет


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
NiJazz
Дата 9.3.2006, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 1
Всего: 23



Цитата

1. Если сервер постоянно пишет в пайп. Сколько он может записать ?(ограничения размером памяти, размером жесткого диска, или еще чем)

Скорее памяти. Информацию лучше отправлять порциями и сбрасывать буфер (FlushFileBuffers).
Цитата

2.Все операции с пайпом схожи с файлами - можно ли синхронизировать чтение - запись?

Да. Смотри параметр overlapped. В функциях ReadFile и WriteFIle.
Цитата

3.Можно ли ограничить подключения к пайпу ? (или это можно сделать солько со стороны клиента при открытии файла с определенными правами)

Да. Смотри параметр SECURITY_ATTRIBUTES в CreateNamedPipe.
Цитата

4. Где можно подробно почитать об этом (желательно не только о пайпах, но и обо всех возможных средствах межпроцессорного взаимодействия). Особенно об ассинхронных операциях

MSDN.
Добавлено @ 18:53
Цитата

P.S. Особенно меня очень интерисует поддерживает ли пайп транзакцию.

Смотри TransactNamedPipe
PM MAIL   Вверх
zss
Дата 10.3.2006, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 708
Регистрация: 17.6.2004

Репутация: 1
Всего: 2



Цитата(NiJazz @ 9.3.2006, 18:53 Найти цитируемый пост)
Скорее памяти

тоесть выше выделенного буфера при создании пайпа не прыгнеш ?



Цитата(NiJazz @ 9.3.2006, 18:53 Найти цитируемый пост)
Да. Смотри параметр overlapped. В функциях ReadFile и WriteFIle.

ну это скорее для ассинхронных операций

Цитата(NiJazz @ 9.3.2006, 18:53 Найти цитируемый пост)
Да. Смотри параметр SECURITY_ATTRIBUTES в CreateNamedPipe

этим можно задать права доступа. А количество соединений также можно задать при создании пайпа.

Цитата(NiJazz @ 9.3.2006, 18:53 Найти цитируемый пост)
Смотри TransactNamedPipe

я не совсем это имел ввиду. Путь сервер пишет в пайп большой кусок
ну например размером 10 мб. В этот момент подключается клиент и начинает читать. Он прочитает только то что было саписано на данный момент (например 3 мб) или чтение не произойдет, пока сервер не запишет все 10 и значит клиент считает именно все 10 мб

Цитата(NiJazz @ 9.3.2006, 18:53 Найти цитируемый пост)
Информацию лучше отправлять порциями и сбрасывать буфер (FlushFileBuffers).

вот тут короче я не знаю что делать.
У меня односторонняя труба. В нее пишет только сервер. Причем пишет всегда.
1. Как отслеживать заполнение трубы ? или после каждой записи сбрасывать буфер. Но тогда если клиент не прочитал - потеря данных
2. Клиент знает только размер выделенной под трубу памяти. Он не знает сколько там лежит реально данных. Получается, что клиенту нужно читать весь буфер целиком, и только тогда он узнает сколько там было ?


З.Ы, только что провел эксперимент. Создал пайп размером 100 байт
и попытался в цикле записывать кусками по 90 байт. Так вот первый раз
он записал 90 байт, а второй 10 байт и встал в ожидание, пока пользователь не прочтет трубу. А мне бы хотелось, если целиком кусок в 90 байт не всезает, то не писать 10 байт, а ждать когда освободится место под все 90 байт

Это сообщение отредактировал(а) zss - 10.3.2006, 10:30
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0716 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.