Вверх ↑
Этот топик читают: Гость
Ответов: 1343
Рейтинг: 31
#61: 2014-07-21 12:55:20 ЛС | профиль | цитата
ruin писал(а):
Всем привет. Подскажите пожалуйста, не могу разобраться(( Запускаю сервер + клиент на одном компе, порт и ip (127.0.0.1) оставляю без изменений, при этом все работает, клиент конектится к серверу. Но когда сервер оставляю на одном компе а клиента запускаю на другом, ни как не хочет соединяться. При этом я конечно меняю на клиенте ip сервера который смотрит в интернет, но соединения нет. Может я что то не так делаю?


открой нужный порт на сервере в брандмауэре, файрволеантивируснике, маршрутизаторероутере... и будет тебе счастье

ну а если доступ в интернет 3G или 4G то конекта тебе не видать, так как порт там не открыть...

если у тебя стоит wifi то сделай там ещё проброс порта
карма: 2

0
Ответов: 4630
Рейтинг: 749
#62: 2014-07-21 13:10:48 ЛС | профиль | цитата
Если ты хочешь, чтобы к твоему компьютеру можно было подключится из Интернета, у тебя должен быть "внешний" IP-адрес (дополнительная услуга у провайдера). Подробности - поиском по форуму.
карма: 26

0
Ответов: 48
Рейтинг: 0
#63: 2014-07-21 13:34:47 ЛС | профиль | цитата
Rysik, а я то гадал почему нет соединения, а оказывается провайдер 3G закрывает порты, а выделенный статический IP адрес не предоставляет. Спасибо что подсказали, сам бы не додумался))
карма: 0

0
Ответов: 1343
Рейтинг: 31
#64: 2014-07-21 13:53:30 ЛС | профиль | цитата
единственный вариант это у тебя ICMP ...
карма: 2

0
Ответов: 48
Рейтинг: 0
#65: 2014-07-21 14:07:59 ЛС | профиль | цитата
Netspirit, вроде разобрался. У меня есть одна задумка но не знаю возможно ли реализовать с помощью данных компонентов. (Есть сервер sql с базой данных, база постоянно обновляется и за собой обновляет локальные клиенты подключенных в сеть к серверу). По этому понадобилась программа которая будет уметь следующее:
1. С рабочего места администратр. отправлять всплывающее сообщения клиентам о том что будет в данный момент производится обновления, что бы не было ошибок они должны завершить работу своей программы.
2. После текстового предупреждения с течением определенного промежутка времени данная программа будет убивать процесс если он не был завершен клиентами (процесс клиентской части базы данных).
3. Программа будет запускать процесс обновления клиентов через открытия bat файла или еще каким нибудь способом.
Так вот, возможно ли реализовать связь и в какой то степени управления администрат. с клиентами, по средствам TCPserver и TCPclient?
карма: 0

0
Ответов: 4630
Рейтинг: 749
#66: 2014-07-21 16:34:31 ЛС | профиль | цитата
Да, ничего сложного. В клиенте по onReceive принимаешь команды и сравниваешь со списком. В зависимости от команды, выполняешь действия: 1) показать предупреждение пользователю, 2) найти и закрыть указанный процесс, 3) выполнить указанный файл. Сервер соответственно эти команды отправляет. Команду №2 можно не посылать - её можно выполнить через заданный таймаут после №1. Под командами здесь понимается любая строка, отправляемая компонентами. Хоть назови "а", "б", "в".

Можно поменять роли местами - у пользователей серверы, а у админа клиент (чтобы не держать клиентов постоянно подключенными). Тогда админ сам подключается к каждому клиенту и посылает команды. Правда это для локальной сети.
карма: 26

0
Ответов: 48
Рейтинг: 0
#67: 2014-07-21 21:44:19 ЛС | профиль | цитата
Netspirit, последовал твоему совету, все работает на УРА!!! Единственное пока не могу понять как через точку onReceive получить и сохранить обновленные dll файлы на клиентские места в определенную директорию
карма: 0

0
Ответов: 4630
Рейтинг: 749
#68: 2014-07-21 21:58:22 ЛС | профиль | цитата
Это уже сложнее. Если в первом случае были просто команды, то теперь
1) нужно придумать более сложный протокол, чтобы отличать команды от файлов (а также параметры - куда файл сохранять, его размер)
2) поскольку при передачи больших данных они выдаются порциями событием onReceive, нужно уметь накапливать данные.
Примерный алгоритм:
1) Отправка файла (после соответствующих команд) - как в примере с помощью конвертора
2) Прием файла после получения команды, что сейчас отправляется файл - с помощью FileStream и модифицированного DataToFile (стандартный не умеет писать в файл без доп. разделителей).

Более конкретно ничего не предложу. Попробуй сам подумай, исходя из следующего: любые отправляемые компонентами данные на принимающей стороне могут быть выданы любым количеством событий onReceive. Например, при посылке 200 байт, первое событие может выдать 20, второе - 180 (реально, макс. размер посылки где-то 8КБ, но полагаться не стоит). То-есть, систему команд нужно придумывать таким образом, чтобы при её разбиении принимающая сторона могла дождаться полной команды из нескольких onReceive путем накопления, например, до обнаружения некоего разделителя.
карма: 26

0
Ответов: 48
Рейтинг: 0
#69: 2014-07-21 22:55:33 ЛС | профиль | цитата
Если я правильно понял, то нужно передаваемые файлы больших объемов разбить на части, запаковать (используя компрессию)и на стороне клиента собрать в один единый файл. Меня один нюанс интересует, допустим получится реализовать данный алгоритм, но если в сети 40 клиентов которым нужно передать dll библиотеки через onReceive это как то может повлиять на скорость и время передачи?
карма: 0

0
Ответов: 4630
Рейтинг: 749
#70: 2014-07-22 14:27:26 ЛС | профиль | цитата
Для начала разберись с отправкой без компрессии. Скорость будет зависеть от скорости сети. Ты ж не гигабайты передаешь.
карма: 26

0
Ответов: 48
Рейтинг: 0
#71: 2014-07-22 14:41:16 ЛС | профиль | цитата
Спасибо за ответ. Уже мудрю, надеюсь с этого что нибудь получится
карма: 0

0
Ответов: 1328
Рейтинг: 69
#72: 2014-08-13 03:39:18 ЛС | профиль | цитата
ruin, пример на старых компонентах из репозитория, может поможет ;)

code_34140.txt
------------ Дoбавленo в 03.39:
nesco,может пора уже добавить? весь форум перерыл пока эту тему нашел (
карма: 2

0
файлы: 1code_34140.txt [2.9KB] [726]
Разработчик
Ответов: 26155
Рейтинг: 2127
#73: 2014-08-13 10:59:53 ЛС | профиль | цитата
Konst писал(а):
может пора уже добавить?

Разрешение от автора пока не получено.

карма: 22

0
Ответов: 1328
Рейтинг: 69
#74: 2014-08-13 15:42:05 ЛС | профиль | цитата
а может и рановато, при небольшой нагрузке сервер падает
16 клиентов передают 1 строку раз в секунду, схемы клиент и сервер из примеров
сервер на Win serwer 2008 r2 sp1 в дата центре, клиенты у меня на 7ке


Сигнатура проблемы:
Имя события проблемы:APPCRASH
Имя приложения:TCP server.exe
Версия приложения:0.0.0.0
Отметка времени приложения:2a425e19
Имя модуля с ошибкой:TCP server.exe
Версия модуля с ошибкой:0.0.0.0
Отметка времени модуля с ошибкой:2a425e19
Код исключения:c0000005
Смещение исключения:00001c9c
Версия ОС:6.1.7601.2.1.0.272.7
Код языка:1049
Дополнительные сведения 1:0a9e
Дополнительные сведения 2:0a9e372d3b4ad19135b953a78882e789
Дополнительные сведения 3:0a9e
Дополнительные сведения 4:0a9e372d3b4ad19135b953a78882e789



карма: 2

0
Ответов: 4630
Рейтинг: 749
#75: 2014-08-13 16:26:05 ЛС | профиль | цитата
Теоретически могут быть ошибки. Сейчас компоненты полностью перерабатываются (чтобы в сервере экономней использовались потоки). Будет видно.
Попробуй в примерах поставь AsyncEvents=None, скажи, помогло ли.
[offtop]
nesco писал(а):
Разрешение от автора пока не получено.
Да получено несколькими страницами ранее. Но сейчас пока не стоит: компоненты ещё дорабатываются.[/offtop]
карма: 26

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)