|
|
|
Создание множественного обмена данными по сети
|
|||
|---|---|---|---|
|
#18+
Сложно написать название темы, но суть вот в чем. Нужно сделать возможность, чтобы множество программ обменивались потоком данных по сети. При этом нужно сделать так, чтобы они подключались к серверу, через этот сервер находили друг друга и передавали бы данные. Как сделать используя сервер понятно - на сервер отправить, сервер передаст по адресу назначения, но тогда сервер может оказаться перегруженным. Можно ли сделать так, чтобы сервер передал, например, адрес клиенту того, к кому этот клиент хочет подключиться и тот передавал бы по назначению напрямую? Если бы компьютеры были в одной сети, проблем бы не было, но можно ли это сделать так, чтобы клиенты обменивались между собой через шлюз не настраивая NAT (ну максимум, вписать в межсетевой экран номер порта). Писать буду на C#, используя Listener, TcpClient, Socket. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2013, 13:44 |
|
||
|
Создание множественного обмена данными по сети
|
|||
|---|---|---|---|
|
#18+
Алексей Вахтин, Почтай о SIP (Session Initiation Protocol) может подскажет решение. Начни например отсюда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2013, 15:18 |
|
||
|
Создание множественного обмена данными по сети
|
|||
|---|---|---|---|
|
#18+
По видимому мне это то, что нужно, вот только надо бы разобраться как это сделать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2013, 16:08 |
|
||
|
Создание множественного обмена данными по сети
|
|||
|---|---|---|---|
|
#18+
Алексей ВахтинПри этом нужно сделать так, чтобы они подключались к серверу, через этот сервер находили друг друга и передавали бы данные. Как сделать используя сервер понятно - на сервер отправить, сервер передаст по адресу назначения, но тогда сервер может оказаться перегруженным.Простое копирование данных из сокета в сокет - операция не ресурсоёмкая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2013, 16:13 |
|
||
|
Создание множественного обмена данными по сети
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovАлексей ВахтинПри этом нужно сделать так, чтобы они подключались к серверу, через этот сервер находили друг друга и передавали бы данные. Как сделать используя сервер понятно - на сервер отправить, сервер передаст по адресу назначения, но тогда сервер может оказаться перегруженным.Простое копирование данных из сокета в сокет - операция не ресурсоёмкая. Ага... Совсем "не ресурсоемкая"... И таких понятий как DoS (Denial of Service) и DDoS (Distributed Denial of Service) в природе не существует... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2013, 17:02 |
|
||
|
Создание множественного обмена данными по сети
|
|||
|---|---|---|---|
|
#18+
Если бы это были короткие сообщения, то может и ничего, а то планируется передавать потоки данных, и не желательна их задержка. Нашел вот такую вещь: http://www.independentsoft.com/sip/index.html то что пробная версия, это еще ладно, но не понятно, почему в примерах указано только как клиентов создавать, а сервер какой-то sipdomain.com ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2013, 18:12 |
|
||
|
Создание множественного обмена данными по сети
|
|||
|---|---|---|---|
|
#18+
sphinx_mv Ага... Совсем "не ресурсоемкая"...У вас есть другие оценки или просто прицепиться?И таких понятий как DoS (Denial of Service) и DDoS (Distributed Denial of Service) в природе не существует...Ну и каким это боком к штатной работе сервиса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2013, 19:32 |
|
||
|
Создание множественного обмена данными по сети
|
|||
|---|---|---|---|
|
#18+
Алексей ВахтинЕсли бы это были короткие сообщения, то может и ничего, а то планируется передавать потоки данных, и не желательна их задержка."Прям щас" я реализовал некий прокси-сервлет, который читает запрос, передаёт его серверу приложений и возвращает ответ клиенту. Перекачка данных в чистом виде. Не ресурсоёмкая задача. Без всякого Java NIO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2013, 19:38 |
|
||
|
Создание множественного обмена данными по сети
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorovsphinx_mv Ага... Совсем "не ресурсоемкая"...У вас есть другие оценки или просто прицепиться?Не порите чушь - никто к Вам цепляться не будет... Вам что-нибудь говорят ограничения максимального количества устанавливаемых одновременных сетевых соединений? А про лимиты скорости подключения сетевых интерфейсов (включая технические)? Про ограниченую производительность отдельного процессора/компьютера/сервера даже не буду заикаться... Basil A. SidorovИ таких понятий как DoS (Denial of Service) и DDoS (Distributed Denial of Service) в природе не существует...Ну и каким это боком к штатной работе сервиса?Ну, и в каком же месте заканчивается "штатная" работа и начинается "аут оф сервис" - у Вас самого внятный критерий есть? Хотя, откуда ему взяться - у Вас же "задача не ресурсоемкая", и любой сервер можно "нагружать до бесконечности"... Ага... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2013, 20:00 |
|
||
|
Создание множественного обмена данными по сети
|
|||
|---|---|---|---|
|
#18+
sphinx_mvНе порите чушь - никто к Вам цепляться не будет...Без комментариев.Вам что-нибудь говорят ограничения максимального количества устанавливаемых одновременных сетевых соединений? А про лимиты скорости подключения сетевых интерфейсов (включая технические)? Про ограниченую производительность отдельного процессора/компьютера/сервера даже не буду заикаться...Если до вас очень туго доходит, то я поясню: было предложено использовать простейший вариант. Я знаю , что это вариант не ресурсоёмок, я знаю как оптимизировать такую передачу и как решать типичные проблемы типа "разноскоростные клиенты" или "вот эти данные нужно раздать нескольким клиентам". Я не знаю це-шарп, но предложенный вариант от языка не зависит. P.S. Прежде чем решать проблемы типичного популярного ресурса, нужно до этого популярного ресурса дорасти . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2013, 20:10 |
|
||
|
Создание множественного обмена данными по сети
|
|||
|---|---|---|---|
|
#18+
Алексей Вахтин, а можно поинтересоваться, почему Вас не устраивает классическая схема "клиент-сервер". Вроде всё тоже, только как-то не такой у Вас подход. Задачу - то Вы не обрисовали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2013, 20:41 |
|
||
|
Создание множественного обмена данными по сети
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorovsphinx_mvНе порите чушь - никто к Вам цепляться не будет...Без комментариев.Вам что-нибудь говорят ограничения максимального количества устанавливаемых одновременных сетевых соединений? А про лимиты скорости подключения сетевых интерфейсов (включая технические)? Про ограниченую производительность отдельного процессора/компьютера/сервера даже не буду заикаться...Если до вас очень туго доходит, то я поясню: было предложено использовать простейший вариант.Так ЭТО у Вас "простейший вариант"?! Ну, а то, что Ваш "простейший варант" будет работать только в "простейших условиях" - это Вам еще предстоит самостоятельно дорасти... Например, когда появится пара десятков-пара сотен-хотя бы тысяча одновременных активных подключений к серверу... Basil A. SidorovЯ знаю , что это вариант не ресурсоёмок, я знаю как оптимизировать такую передачу и как решать типичные проблемы типа "разноскоростные клиенты" или "вот эти данные нужно раздать нескольким клиентам". Человек, который говорит, что знает все, на самом деле не знает ничего. (с) - очень точно Вас характеризует. Вы НЕ знаете, СКОЛЬКО (и КАКИХ) ресурсов использует Ваше решение - соответственно, оптимизировать Вам НЕЧЕГО. И просто ЗНАТЬ, как решаются типичные проблемы, и УМЕТЬ решать типичные проблемы - это весьма разные вещи... Basil A. SidorovЯ не знаю це-шарп, но предложенный вариант от языка не зависит. А это Вы к чему? Basil A. SidorovP.S. Прежде чем решать проблемы типичного популярного ресурса, нужно до этого популярного ресурса дорасти .Вас с Вашим популизмом даже до "песочницы" допускать опасно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2013, 20:49 |
|
||
|
Создание множественного обмена данными по сети
|
|||
|---|---|---|---|
|
#18+
Алексей Вахтин, Если ненужно боротся с NAT то можно посмотреть на решение без сервера. Например на основе DNS-SD . См. avahi и Bonjour ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2013, 21:13 |
|
||
|
Создание множественного обмена данными по сети
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovАлексей ВахтинЕсли бы это были короткие сообщения, то может и ничего, а то планируется передавать потоки данных, и не желательна их задержка."Прям щас" я реализовал некий прокси-сервлет, который читает запрос, передаёт его серверу приложений и возвращает ответ клиенту. Перекачка данных в чистом виде. Не ресурсоёмкая задача. Без всякого Java NIO. Сколько клиентов было? Для начала у нас будет их немного, а если их количество вырастет до, скажем, тысячи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2013, 12:21 |
|
||
|
Создание множественного обмена данными по сети
|
|||
|---|---|---|---|
|
#18+
defragmentatorАлексей Вахтин, а можно поинтересоваться, почему Вас не устраивает классическая схема "клиент-сервер". Вроде всё тоже, только как-то не такой у Вас подход. Задачу - то Вы не обрисовали. Меня то устраивает, да тут те (по образованию медики), кто занимается считыванием данных с приборов и передаче их по сети для обработки, а после обработки еще куда, не хотят заниматься настройкой своих программ и NAT (некоторые компьютеры будут за шлюзами). Они хотят поставить сервер, к которому все подключается и передается с минимальными настройками. Просто еще есть человек, у которого воображение рисует тысячи таких компьютеров, не знаю, дорастет ли это число до тысячи, а вдруг... Да, и еще, может нужно будет передавать данные и нескольким клиентам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2013, 12:29 |
|
||
|
Создание множественного обмена данными по сети
|
|||
|---|---|---|---|
|
#18+
Алексей ВахтинОни хотят поставить сервер, к которому все подключается и передается с минимальными настройками. Просто еще есть человек, у которого воображение рисует тысячи таких компьютеров, не знаю, дорастет ли это число до тысячи, а вдруг... Да, и еще, может нужно будет передавать данные и нескольким клиентам. Ну и ... пусть ставят сервер, к нему подключаются с минимальными настройками, сливают на него данные. Данные будут храниться. А потом по мере надобности читаться. А так у Вас Skype какой-то получится. И потом тысячи клиентов одновременно работать не будут. И что Ваша программа будет делать, если компьютер получателя будет выключен:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2013, 14:47 |
|
||
|
Создание множественного обмена данными по сети
|
|||
|---|---|---|---|
|
#18+
Если одного сервера мало будет, поставьте два заточенных каждый на свои данные. То, что Вы предлагаете, это не технологично - отсутствие централизованного ХД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2013, 14:51 |
|
||
|
Создание множественного обмена данными по сети
|
|||
|---|---|---|---|
|
#18+
Алексей ВахтинСколько клиентов было?В конкретном тесте - 90~120. Отдельный компьютер с гигабитной сеткой. Расклад загрузки серверной части (две отдельные JVM) - 70-90 процентов для сервера приложений и 1-3 процента для собственно прокси.Для начала у нас будет их немного, а если их количество вырастет до, скажем, тысячи?Понимаете, в чём дело ... Те же apache httpd и apache tomcat "искаропки" расчитаны на двести одновременных подключений. После минимальных настроек что тот, что другой без проблем выдерживают до 500 одновременных подключений. У меня не было цели определить пределы возможностей JVM/IP-стека, поэтому на бОльших значениях я не тестировал - пятьсот с разумным запасом закрывает наши потребности. По этим и некоторым другим тестам я могу сделать вывод, что на вполне типовом железа система "центральный сервер - клиенты за NAT/proxy" упрётся, скорее всего, в пропускную способность канала (вашего) сервера. Действительно "равноправная" сеть, конечно, не имеет такого ограничения, но если у клиента нет возможности менять настройки "ближайшего шлюза" - других реальных вариантов всё равно нет. Резюме. HTTP-протокол. Серверная часть на "классическом" CGI, сервлетах, модулях расширения конкретного сервера или даже на языках динамических страниц (PHP/JSP/ASP). Специализированный клиент или модуль расширения под конкретный браузер, реализующие логику вашей задачи. Практически гарантированная "проходимость", понятные способы кэширования контента и масштабирования системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2013, 15:27 |
|
||
|
Создание множественного обмена данными по сети
|
|||
|---|---|---|---|
|
#18+
Алексей ВахтинМеня то устраивает, да тут те (по образованию медики), кто занимается считыванием данных с приборов и передаче их по сети для обработки, а после обработки еще куда, не хотят заниматься настройкой своих программ и NAT (некоторые компьютеры будут за шлюзами).Есть cURL . Как исполняемый файл и как библиотека для встраивания в приложения. Может передавать файлы/потоки "в обе стороны" по куче протоколов, с разными возможностями по авторизации и т.п. Не без глюков, но вполне рабочий продукт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2013, 15:36 |
|
||
|
Создание множественного обмена данными по сети
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovАлексей ВахтинСколько клиентов было?В конкретном тесте - 90~120. Отдельный компьютер с гигабитной сеткой. Расклад загрузки серверной части (две отдельные JVM) - 70-90 процентов для сервера приложений и 1-3 процента для собственно прокси. 90+% загрузки сервера - за такое на продакшене нужно стреляться... И, кстати, у Вас прокси разве не на JVM работает? Большее количество подключений еще больше нагрузит сервер - а расти уже особо некуда... На системные нужды тоже некоторое количество ресурсов требуются. В итоге получается, что уже сотня даже "тестовых" клиентов (пусть и с неизвестным характером данных, которые Вы использовали для обмена в тестах) - и сервер в ступоре... Хороший пример "простого копирования данных", которое "совсем не ресурсоемкая задача"... Basil A. SidorovДля начала у нас будет их немного, а если их количество вырастет до, скажем, тысячи?Понимаете, в чём дело ... Те же apache httpd и apache tomcat "искаропки" расчитаны на двести одновременных подключений. После минимальных настроек что тот, что другой без проблем выдерживают до 500 одновременных подключений. У меня не было цели определить пределы возможностей JVM/IP-стека, поэтому на бОльших значениях я не тестировал - пятьсот с разумным запасом закрывает наши потребности.С Вашими потребностями разобрались... Терзают смутные сомнения (могу ошибаться) относительно взаимодействия apache httpd или apache tomcat с .NET... Basil A. SidorovПо этим и некоторым другим тестам я могу сделать вывод, что на вполне типовом железа система "центральный сервер - клиенты за NAT/proxy" упрётся, скорее всего, в пропускную способность канала (вашего) сервера.Пока Вы продемонстрировали, что сервер приложений, а не канал узкая часть Вашей системы - слишком много ресурсов системы он отъедает под себя для выполнения сравнительно тривиальных задач. Basil A. SidorovРезюме. HTTP-протокол. Серверная часть на "классическом" CGI, сервлетах, модулях расширения конкретного сервера или даже на языках динамических страниц (PHP/JSP/ASP). Специализированный клиент или модуль расширения под конкретный браузер, реализующие логику вашей задачи.Для .NET - это, практически, прошлый век... С полным отказом от использования возможностей, предлагаемых средой. Basil A. SidorovПрактически гарантированная "проходимость", понятные способы кэширования контента и масштабирования системы.Типа, в .NET ничего этого нет... Угу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2013, 13:02 |
|
||
|
Создание множественного обмена данными по сети
|
|||
|---|---|---|---|
|
#18+
sphinx_mv90+% загрузки сервера - за такое на продакшене нужно стреляться...Я тестировал решение вполне конкретной проблемы. Я не собираюсь обсуждать ни проблему, ни её решение, ещё раз напомню, что собственно перекачка данных (прокси-модуль) это ~2% и, ещё раз, предложу вам аккуратнее комментировать мои высказывания.И, кстати, у Вас прокси разве не на JVM работает?А перечитать?Для .NET - это, практически, прошлый век... С полным отказом от использования возможностей, предлагаемых средой.Сначала определите, какой процент клиентов положит, в лучшем случае, болт на "возможности предлагаемые средой", а потом можно будет пообсуждать и альтернативы HTTP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2013, 19:41 |
|
||
|
Создание множественного обмена данными по сети
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovДля .NET - это, практически, прошлый век... С полным отказом от использования возможностей, предлагаемых средой.Сначала определите, какой процент клиентов положит, в лучшем случае, болт на "возможности предлагаемые средой", а потом можно будет пообсуждать и альтернативы HTTP.Вообще-то предлагается альтернатива не столько одному из возможных транспортных протоколов (HTTP), сколько всему тому слабоструктурируемому "буллшиту", который предлагаете Вы и который тянется, в лучшем случае, с середины 1990-х гг. Фреймворк Windows Communication Foundation, который является составной частью платформы .NET, заменяет его чуть более чем полностью. И городить апачи, сервлеты, цги и прочий хлам при наличии весьма развитых возможностей WCF - мягко говоря, неразумно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2013, 20:21 |
|
||
|
Создание множественного обмена данными по сети
|
|||
|---|---|---|---|
|
#18+
sphinx_mvФреймворк Windows Communication Foundation, который является составной частью платформы .NET, заменяет его чуть более чем полностью.Вы опять невнимательно читаете. Во фразе "модуль расширения конкретного сервера" предполагалось (в том числе), что автор слабает "что-нибудь этакое под IIS на (своём любимом) це-шарпе". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2013, 20:26 |
|
||
|
Создание множественного обмена данными по сети
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorovsphinx_mvФреймворк Windows Communication Foundation, который является составной частью платформы .NET, заменяет его чуть более чем полностью.Вы опять невнимательно читаете. Во фразе "модуль расширения конкретного сервера" предполагалось (в том числе), что автор слабает "что-нибудь этакое под IIS на (своём любимом) це-шарпе".Это ничего, что для хостинга WCF-приложения никакой острой необходимости в IIS не наблюдается? Модератор: Товарищ, смените тон. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2013, 23:51 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=60&tid=1341971]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 391ms |

| 0 / 0 |
