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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Клиент-серверное приложение, Клиент-сервер не через 127.0.0.1 
:(
    Опции темы
Dogevec
Дата 26.7.2009, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Доброго времени суток. Мне необходимо реализовать соединение N клиентов и одного сервера на одной машине. Пробовал сокетами через петлю 127.0.0.1, очень медленно для моего приложения, так что их отметаем сразу. Прошу посоветовать другие способы, с учётом, что и клиенты и сервер запускаются ТОЛЬКО на одной машине)

P.S. Зарание благодарю=)
PM MAIL   Вверх
andrew_121
Дата 26.7.2009, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

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



Dogevec, Сомневаюсь что может быть что-то бустрей лупбэка, в плане сокетов.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Dogevec
Дата 26.7.2009, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Так я и спрашиваю, есть ли возможность это сделать не через сокеты? Кто знает, подскажите, очень нужно, горю!!

Это сообщение отредактировал(а) Dogevec - 26.7.2009, 19:15
PM MAIL   Вверх
GremlinProg
Дата 26.7.2009, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

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




M
GremlinProg
Тема перемещена из раздела C/C++: Системное программирование и WinAPI


Добавлено через 4 минуты и 59 секунд
Цитата(Dogevec @  26.7.2009,  21:14 Найти цитируемый пост)
не через сокеты

тема "отзеркалена" обратно


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Cheloveck
Дата 26.7.2009, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

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



Самый быстрый способ (и самый опасный) - писать в общую память напрямую.


--------------------
user posted image
PM Jabber   Вверх
Dogevec
Дата 27.7.2009, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Как говориться, ищите да обрящите))
Цитата

Варианты
1. Буфер обмена. Недостаток в том, что любые другие процессы имеют к нему доступ. Что из этого следует, я думаю объяснять не надо.

2. Использовать сообщение WM_COPYDATA. Минусы - необходим цикл сообщений для каждого из участвующих процессов.

3. Отображаемые в память файлы. Плюсы - встроенная поддержка безопасности и большой объем передаваемых данных. Возможна передача данных более чем между двумя процессами. Но неоходимо обеспечить синхронизацию.

3. Mailslots. Также возможна передача данных более чем между двумя процессами. Используют одностороннюю передачу данных. Поддерживают broadcast. Лучше подходят для передачи небольших объемов данных.

4. Pipes. Бывают анонимные и именованные. Анонимные могут быть использованы только на одном компьютере. Хорошо подходят для связи двух процессов. Именованные - поддерживают связь между компьютерами.

5. Сокеты

Еще альтернативы - DDE(устаревший метод), RPC(для вызова процедур в других процессах), COM(если только для передачи данных - IMHO извращение)

Самым оптимальным вариантом, на мой взгляд являются отображаемые в память файлы(но только на одном компьютере)
    

PM MAIL   Вверх
kolobok0
Дата 27.7.2009, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Dogevec @ 26.7.2009,  18:52)
..сокетами ...очень медленно для моего приложения...

Вы выставляли время ожидания на TCP уровне? Если нет - да, будет достаточно медленно.


удачи Вам
(круглый)
PM MAIL   Вверх
Dogevec
Дата 27.7.2009, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вы имеете ввиду на стороне приёмника время ожидания? Если да, то устанавливал, если не это, то поясните пожалуйста
PM MAIL   Вверх
kolobok0
Дата 31.7.2009, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Dogevec @ 27.7.2009,  18:11)
Вы имеете ввиду на стороне приёмника время ожидания? Если да, то устанавливал, если не это, то поясните пожалуйста

Код

    BOOL val = TRUE;
    setsockopt(soc, IPPROTO_TCP, TCP_NODELAY, (const char*)&val, sizeof(val));



с уважением
(круглый)
PM MAIL   Вверх
SVN74
Дата 2.8.2009, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 5.5.2008
Где: Комсомольск на Дн епре

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



Цитата(Dogevec @  26.7.2009,  18:52 Найти цитируемый пост)
 Пробовал сокетами через петлю 127.0.0.1, очень медленно 

Если сделать размер передающего и принимающего буфера 1024*1024 - будет копировать  4Гб / 3мин, - это медленно?
PM MAIL WWW   Вверх
Lazin
Дата 2.8.2009, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 5
Всего: 154



Цитата(Dogevec @  26.7.2009,  18:52 Найти цитируемый пост)
Мне необходимо реализовать соединение N клиентов и одного сервера на одной машине. Пробовал сокетами через петлю 127.0.0.1, очень медленно для моего приложения, так что их отметаем сразу. Прошу посоветовать другие способы, с учётом, что и клиенты и сервер запускаются ТОЛЬКО на одной машине)

может у тебя просто алгоритм не оптимальный?

Добавлено через 3 минуты и 16 секунд
к примеру у тебя может быть много вызовов send с небольшими объемами передаваемых данных, в этом случае у тебя будет медленная передача данных, независимо от используемой технологии IPC, в этом случае нужно изменить алгоритм так, что-бы у тебя больше данных передавалось за один send
PM MAIL Skype GTalk   Вверх
REZiaMIX
Дата 2.8.2009, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



В винде есть pipes , shared memory.
Вообще можно заюзать что-то из разряда boost.interprocess.
loopback сокеты очень быстрые, сам юзаю обертку , работает ну очень быстро. 
Незнаю что за объемы передаваемой информации должны быть , что сокеты не подойдут.

Это сообщение отредактировал(а) REZiaMIX - 2.8.2009, 16:55


--------------------
user posted image
PM MAIL   Вверх
GrayCardinal
Дата 2.8.2009, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 3
Всего: 58



Dogevec
ОСЬ какая ?


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


 




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


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

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