Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
129 / 65 / 16
Регистрация: 03.09.2015
Сообщений: 832

Большое количество tcp подключений

29.09.2017, 20:53. Показов 1659. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
Интересует такой вопрос:
Подойдут ли TIdTcp элементы для множественных соединений?
Например, клиент подключается к серверу и после этого сотни других серверов отсылают по части определенной информации клиенту.
И еще, как решить проблему с портами, как это делает Skype, или для этого нужен серверный мост?
И почему клиенту не нужно открытие портов, а серверу нужно? Ведь клиент тоже может принимать данные, но на него это не влияет
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.09.2017, 20:53
Ответы с готовыми решениями:

Узнать количество подключений в сеансах
Если функция при помощи которой, можно узнать количество подключений в сеансах или каким либо образом можно узнать?

Большое число TCP подключений к Windows
Задался вопросом возможности использования большого числа TCP подключений к программе на windows XP и Windows 7. Есть ли в этих...

Большое количество подключений.
Добрый день уважаемые форумчане. Столкнулся с такой бедой. При запуске браузера (Хром 16.0.912.63) через TCPView наблюдаю огромное...

10
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,154
Записей в блоге: 3
29.09.2017, 21:21
Доброго

Цитата Сообщение от ziqp Посмотреть сообщение
Подойдут ли TIdTcp элементы для множественных соединений?
Подойдут

Цитата Сообщение от ziqp Посмотреть сообщение
сотни других серверов отсылают по части определенной информации клиенту.
это как, или Вы опечатывались и имели ввиду клиентов серверу,а не наоборот?

Всем нужны открытые порты.

Еще нужен белый ip, а так же проброска портов,если есть коммутатор или роутр.
0
129 / 65 / 16
Регистрация: 03.09.2015
Сообщений: 832
29.09.2017, 23:21  [ТС]
Цитата Сообщение от Dinkin Посмотреть сообщение
Всем нужны открытые порты.
Смотрите, для TIdTcpServer нужен открытый порт, на котором он будет работать
TIdTcpClient может свободно подключаться к серверу и не имеет своего порта (по крайней мере, для его настройки). Я так понял, есть определенные системные порты, которые не закрываются. К примеру, серфинг через браузер.
Цитата Сообщение от Dinkin Посмотреть сообщение
это как, или Вы опечатывались и имели ввиду клиентов серверу,а не наоборот?
Нет. Должна быть такая система:
Клиент->сервер->сотне других серверов->клиент (без возврата серверу). В каждом сообщении будет содержаться ip адрес клиента и очередность информации, чтобы не запутаться. Боюсь только что все будет приниматься в один поток

И еще вопрос: Может ли TIdTcpServer подключаться к другому TIdTcpServer?
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,154
Записей в блоге: 3
29.09.2017, 23:32
Цитата Сообщение от ziqp Посмотреть сообщение
Может ли TIdTcpServer подключаться к другому TIdTcpServer
нека.

Цитата Сообщение от ziqp Посмотреть сообщение
Смотрите, для TIdTcpServer нужен открытый порт, на котором он будет работать
TIdTcpClient может свободно подключаться к серверу
Всем нужны открытые порты, просто для исходящего соединения более щадящие условия блокировки....и даже его может что то легко заблокировать (какой нить McaFee,после первой передачи пакетов).

Цитата Сообщение от ziqp Посмотреть сообщение
Клиент->сервер->сотне других серверов->клиент (без возврата серверу).
Ну ни кто не мешает на сервере устанавливать клиент к другим серверам.

PS Вы должны понимать, что ни каждый физический клиент в связи с техническими рамками, сможет выступать сервером.
0
129 / 65 / 16
Регистрация: 03.09.2015
Сообщений: 832
29.09.2017, 23:42  [ТС]
Цитата Сообщение от Dinkin Посмотреть сообщение
Всем нужны открытые порты, просто для исходящего соединения более щадящие условия блокировки....и даже его может что то легко заблокировать (какой нить McaFee,после первой передачи пакетов).
Понял.
Теперь вопрос немного по-другому: какие порты не блокируются роутером, или как избежать этой блокировки? Скажем, на пк отключен firewall и антивирусы.

И еще получается, что не подключившись к серверу, клиент не может получать данные от него, так?
Получается, сервер от клиента отличается только тем, что сервер слушает соединения постоянно, а клиент только при подключении? И еще.. порт прослушки клиента TIdTcpClient всегда разный? Или один и тот же?
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,154
Записей в блоге: 3
29.09.2017, 23:59
Вкратце какие условия должны быть соблюдены:

Для сервера:
* Обязательно должен быть белый IP (Не путать со статичным) (пускай динамический даже, но главное белый)
* Порт не должен быть занят другой программой
* Порт должен быть разрешен в фаерволе или антивирусе (у кого что)
* Если стоит коммутатор или роутер, в нем обязательно должны быть проброшены порты на IP адрес устройства, где запущен Ваш сервер.

Для клиента:
* Порт не должен быть занят другой программой
* Порт должен быть разрешен в фаерволе или антивирусе (у кого что)...бывает что антивирусы блочат пакеты подозрительных программ (тут порой спасает подпись)

Есть служебные порты которые всегда открыты, к примеру по которым работают браузеры. Так же технически можно свою программу добавить в исключения (сам не делал, но коллега делал =))

Цитата Сообщение от ziqp Посмотреть сообщение
И еще получается, что не подключившись к серверу, клиент не может получать данные от него, так?
Верно

Цитата Сообщение от ziqp Посмотреть сообщение
Получается, сервер от клиента отличается только тем, что сервер слушает соединения постоянно, а клиент только при подключении?
Практически так

Цитата Сообщение от ziqp Посмотреть сообщение
порт прослушки клиента TIdTcpClient всегда разный? Или один и тот же?
Какой Вы сами зададите.....

На сам деле задайте какойнить 5588.....а уж с проблемами соединение,будете бороться по мере поступления
0
129 / 65 / 16
Регистрация: 03.09.2015
Сообщений: 832
30.09.2017, 21:30  [ТС]
Последний вопрос.
Как получать одновременно разную информацию от 10 разных отправителей? Не нужно ведь 10 элементов на форму кидать. Еще, со стороны отправителя должен быть сервер или клиент?
Клиент[клиент(после подключения к серверу)]->сервер[сервер 1]->сотне других серверов[получается, клиенты]->сервер[сервер 1]->клиент[клиенту отправляются ip для подключения с ключем данной сессии]->запрос на подключение к сотне серверам[сервер]->клиент[клиент].
Верная схема?
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,154
Записей в блоге: 3
30.09.2017, 21:49
Один сервер обслуживает множество клиентов, и при приемке пакетов у сервера конечно же есть функционал что бы различать какой пакет от кого пришел.

Цитата Сообщение от ziqp Посмотреть сообщение
Клиент[клиент(после подключения к серверу)]->сервер[сервер 1]->сотне других серверов[получается, клиенты]->сервер[сервер 1]->клиент[клиенту отправляются ip для подключения с ключем данной сессии]->запрос на подключение к сотне серверам[сервер]->клиент[клиент].
Что то намудренное, но задачи бывают разные =)
0
129 / 65 / 16
Регистрация: 03.09.2015
Сообщений: 832
01.10.2017, 00:16  [ТС]
Цитата Сообщение от Dinkin Посмотреть сообщение
Что то намудренное, но задачи бывают разные =)
Очень намудреное.
Задача такая:
1. Клиент отправляет серверу запрос на данные
2. Сервер обрабатывает запрос и смотрит на каких серверах раскидана эта информация
3. Сервер посылает остальным запрос на передачу данных клиенту
4. Клиент собирает все данные, полученные с разных серверов.
Очень желательно сделать это в одну сторону без передачи всех данных обратно одиночному серверу, чтобы он не имел доступ к данным, а только клиент при получении. А если ставить TIdTcpServer на клиент, то появляются проблемы с портами на роутере. Вот и спрашиваю как можно обойти переадресацию вручную и сразу у клиента не было с этим проблем.
И еще какую схему лучше использовать для этой цели.
Главное это то, что система должна быть независима от сторонних сервисов и сайтов, а также максимально удобна без всяких перекидываний портов со стороны клиента

Добавлено через 17 минут
Насчет как все это будет работать, я знаю. Мне только нужна помощь с "как лучше"
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,154
Записей в блоге: 3
01.10.2017, 00:23
Ну тут правильнее будет иметь отдельно клиент приложение,без всяких серверов.
Раз серверное приложение у Вас будет общаться по типа "Звездочка" с другими серверами, то тут два варианта:
1) Вы добавляете к серверу клиентский компонент, и по очереди подключаетесь через него к другим
2) Вы заранее знаете сколько серверов и создаете динамически столько же клиентов (на каждом сервере) и со всеми серверами держите канал
0
129 / 65 / 16
Регистрация: 03.09.2015
Сообщений: 832
01.10.2017, 00:25  [ТС]
Вот что я придумал:
Гл сервер отправляет данные клиенту о ip адресах серверов с информацией, Клиент использует второй элемент TIdTcpClient чтобы по очереди получать информацию с серверов. Информация сортируется и собирается в текст, выводится.
Так лучше? Ведь не похоже на костыльное решение?
Цитата Сообщение от Dinkin Посмотреть сообщение
2) Вы заранее знаете сколько серверов и создаете динамически столько же клиентов (на каждом сервере) и со всеми серверами держите канал
потребует много оперативной, да и очень грузное решение.
Цитата Сообщение от Dinkin Посмотреть сообщение
1) Вы добавляете к серверу клиентский компонент, и по очереди подключаетесь через него к другим
Здесь это не обязательно. Сервера с информацией уже будут знать, какая информация будет нужна клиенту по сообщению.
Боюсь только за отдельное клиентское приложение. Нет желания использовать на нем серверный компонент
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.10.2017, 00:25
Помогаю со студенческими работами здесь

Большое кол-во сетевых подключений и недоступность сайтов
Некоторое время назад (около двух недель) периодически стал недоступен один сайт, в последние дни перестали открываться почти все, причем...

Влияние количества подключений к хосту на загруженность канала TCP/IP
Правильно ли я понимаю, что чем больше подключений к одному удаленному хосту от разных машин, то тем больше кадров этому хосту приходится...

Как написать многопоточный tcp сервер, рассчитанный на множество подключений
Всем привет, подскажите как написать tcp сервер, на tcp сокетах, к которому постоянно буду пытаться подключится много клиентов, но сервер...

Отправить по TCP большое целое число
Как правильно отправить по TCP большое целое число, которое не вмещается в 1 байт, например 1024 ?? Какой класс и функцию для этого...

Количество дней, когда выпало самое большое количество осадков
В массиве хранится информация о количестве осадков,выпавших за каждый день октября. определить количество дней, когда выпало самое большое...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru