![]() |
|
|
![]()
|
|
| Glorius |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 10.10.2006 Репутация: нет Всего: нет |
Добрый день.
Есть идея создать программу обмена сообщениями и файлами наподобие ICQ между двумя удаленными компьютерами по сети. Не очень хорошо разбираюсь в программировании, создал несколько программок, достаточно функциональных, но далеко не спец и под интернет не программировал вообще. Подскажите какими средствами это все делается, какие темы нужно изучить, какими компонентами нужно пользоваться. Спасибо. |
|||
|
||||
| UniBomb |
|
|||
|
Новичок ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 1754 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 3 Всего: 97 |
Пример реализации с исходниками.
|
|||
|
||||
| Glorius |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 10.10.2006 Репутация: нет Всего: нет |
Спасибо посмотрю. Но это пример чата в локальной сети? А в сети интернет? Мне бы элементарный пример для понимания принципа работы. Что нибудь типа поля Мемо, поля Edit и кнопки на форме клиентского приложения. Функциональность которого бы заключалась по нажатию кнопки в отправке строчки из поля Edit в поле Мемо своего приложения, ну и собственно в поле Мемо приложения удаленного пользователя. Связь через интернет. |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
HTTP?
Добавлено через 4 минуты и 32 секунды
Indy |
|||
|
||||
| Glorius |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 10.10.2006 Репутация: нет Всего: нет |
||||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
C:\Program files\Borland\CBuilder6\Examples\Indy
|
|||
|
||||
| Glorius |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 10.10.2006 Репутация: нет Всего: нет |
Что-то не получается наладить связь по сети интернет.
Создаю сервер на компьютере со статическим ай-пи, задав порт (как я понял это может быть любай цифра из определенного диапазона, я пробовал 4964, 5500, 6701). Пробую подключиться клиентом с другого компьютера, задав в свойство Host ай-пи сервера и в свойство Port - порт сервера. В событии клиента при подключении к серверу записываю вывод сообщения что присоединился. В событии сервера при подключении клиента записываю вывод сообщения, что присоединился клиент. Так вот нажав на копку "Подключиться к серверу" в клиенте нет сообщения об успешности подключения, соответственно на сервере тоже, то есть связь не установлена.
Что я делаю не так? |
|||
|
||||
| Glorius |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 10.10.2006 Репутация: нет Всего: нет |
Мда, собственно забыл активизировать клиента.
Теперь выскакивает ошибка "Asynchronous socket error 10060". Это сообщение отредактировал(а) Glorius - 15.3.2009, 17:49 |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера. |
|||
|
||||
| Glorius |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 10.10.2006 Репутация: нет Всего: нет |
Это я уже понял, а вот как это побороть пока не придумал. |
|||
|
||||
| Glorius |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 10.10.2006 Репутация: нет Всего: нет |
В дополнение.
Изучая тему нашел информацию что связь еще зависит от типа доступа в интернет. Проверяю работоспособность на двух компьютерах подключенных по ADSL, у одного ай-пи адрес динамический, у второго (сервера) - статический. |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
А Firewall'а там по пути нет случайно?
|
|||
|
||||
| Glorius |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 10.10.2006 Репутация: нет Всего: нет |
||||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 14 Всего: 39 |
Glorius,
Сокет должен работать в асинхронном режиме, а получается так что ты пытаешься его заставить работать в синхронном режиме что присуще консольным приложениям сожержащим основной поток. -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| Glorius |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 10.10.2006 Репутация: нет Всего: нет |
||||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
А сервер к нету подключен через ADSL модем или роутер? Если через Роутер - в каком режиме он работает мост или роутер?
|
|||
|
||||
| Glorius |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 10.10.2006 Репутация: нет Всего: нет |
||||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Так вроде он и в режиме роутера работать может. Глянтьте на всякий случай, а то может тут зря воды столько развели, а ларчик бах и откроется.
|
|||
|
||||
| Glorius |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 10.10.2006 Репутация: нет Всего: нет |
||||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Если вы намерены писать достаточно серьезное сетевое приложение, то просто обязаны узнать как работают роутеры, что такое NAT и т.п. Зайдите в настройки роутера и посмотрите: 1. В каком режиме он находится (мост или роутер) 2. Включен ли у него аппаратный файрволл 3. Попробуйте в любом случае установить прямой рефорвардинг нужных вам портов. Должна же быть к нему инструкция? Конкретно эту модель я ни разу не настраивал - думаю информации в нете по ней уйма. Просто на сколько я помню он поддерживает беспроводную сетку тогда и роутить он просто обязан уметь. |
|||
|
||||
| Glorius |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 10.10.2006 Репутация: нет Всего: нет |
Anikmar, вы можете кратко и в достаточном объеме пояснить какие именно настройки ДОЛЖНЫ быть установлены на модеме сервера и клиента, в частности как определить режим (мост или роутер) и как его установить, включен ли файервол и как установить прямой рефорвардинг нужных мне портов?
Или мне нужно глубоко изучать тему? Приложение предполагается не сложное, на уровне обмена информацией между 2 компьютерами. |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Если бы у меня был такой модем - я бы сразу вам все рассказал и не стал бы тянуть резину. К сожалению у меня другая модель, они отличаются существенно. Могу только посоветовать: Посмотрите тут, тут, тут А главное, используйте ЭТО |
|||
|
||||
| Glorius |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 10.10.2006 Репутация: нет Всего: нет |
Anikmar, да, как настроить - это можно нагуглить, но вам спасибо. Я же имел ввиду ЧТО ИМЕННО нужно настроить. То есть, нужен мост или роутер, нужно устанавливать прямой рефорвардинг портов или нет.
|
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Вне зависимости сложное сетевое приложение вы будете писать или не очень - вы собираетесь связать два компьютера через интернет. А значит, вы как минимум должны знать как адресуются компьютеры в данной сети.
Вкратце расскажу про NAT. В виду того, что общее количество IP адресов ограничено и быстро заканчивается, а IP v6 еще не известно когда получит широкое распространение (слишком много аппаратных роутеров необходимо поменять) наиболее широкое распространение получил NAT - способ ретрансляции сетвых адресов при помощи роутеров. Суть работы роутера достаточно проста: как только один из компов пытается подключится к другому (указывает его IP и порт) реально этот запрос сначала идет к роутеру (шлюзу). Сам роутер имеет свой IP и виден всему интернету. Он перенаправляет ваш запрос на указанный адрес. В случае с одним компом - все в порядке. А если 10 компов в локалке пытаются загрузить странички с одного сервака? Ведь сервак должен ответить, а для него - это всего лишь 1 адрес IP, который имеет роутер. И сервак в интернете никак не сможет понять к какому конкретно компу за роутером он должен обратиться. Это и есть NAT - роутер динамически меняет IP заголовок и подставляет фиктивные адреса портов, а затем при поступлении на эти порты ответов транслирует назад. Теперь о вашей ситуации. Если у вас сервер спрятан за роутер, то при поступлении пакета от клиента из Беларуссии роутер понятия не имеет куда этот пакет ему деть. Потому, как для порта, указанного в заголовке у него нет в таблице соответствия на какую из локальных машин этот пакет отправить. Даже если локальных машин в сети всего одна. Вот он и выкидывает пакет. Для этого и существует порт форвардинг - когда роутеру приказывают, что при поступлении пакетов на такой-то порт немедленно транслируй на такую-то машину в сети и не занимаяся ерундой. Это вкратце и по возможности доходчиво в меру моих знаний. Я не гуру, поэтому сказал, что сам понимаю. Добавлено через 3 минуты и 6 секунд Поставьте в режим моста и отключите файрволл. Дополнительно (по идее уже не нужно, но сделайте): Включите режим порт форвардинг на все порты, все пакеты напрямую на компьютер сервера. Он должен позволять задавать порты по диапазону - для всех протоколов все диапазоны перенапрвьте на сервер. |
|||
|
||||
| Glorius |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 10.10.2006 Репутация: нет Всего: нет |
Anikmar, спасибо, попробую, завтра отпишу о результатх.
|
|||
|
||||
| Glorius |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 10.10.2006 Репутация: нет Всего: нет |
Anikmar, все настройки серверного модема такие как показаны по вашей первой ссылке, то есть настроен модем как мост (bridge).
А вот как выглядит статусное окно модема клиентской машины. Тоже мост. При отключенных фаерволах пинг не проходит как и не проходил раньше. Это сообщение отредактировал(а) Glorius - 17.3.2009, 15:47 Присоединённый файл ( Кол-во скачиваний: 8 )
_____.JPG 71,04 Kb |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
А можете сказать, какой IP у вашего сервера? (Если нет военной тайны, конечно).
|
|||
|
||||
| Glorius |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 10.10.2006 Репутация: нет Всего: нет |
впринципе нет, только я дам адрес клиентской машины, она у меня под рукой, а в моей программе нету особой разницы кто именно будет сервером, IP-адрес 86.57.178.37. Если вы не сильно заняты, может поможете мне справиться с этой проблемой в ICQ? Мой номер 352336167 |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Попробуем. Я свяжусь с вами примерно через 30 минут - когда до дому доеду
|
|||
|
||||
| KTatsu |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 23.8.2008 Где: Москва Репутация: 1 Всего: 1 |
Тема относительно не старая, так, что задам свой вопрос сюда, вместо того, чтобы писать новый пост, тем более вопрос по теме.
Тоже возникла проблеммка с передачей данных по сети. Я хочу сделать на своей машине сервер, а у друга будет клиент, проблема, с которой я столкнулся - маршрутеризаторы. По LAN отлично работает, а вот из внешней сети не знаю как присоединиться. Использовал компоненты TClientSocket и TServerSocket. Дело в том, что у моего провайдера сидят несколько клиентов на одном IP через адсл, дальше мой домашний роутер и домашняя сеть. Вопрос, как связаться с сервером при таком раскладе? Понимаю, что существует НАТ, но как им воспользоваться? Или как должно выглядеть обращение в сеть? Я должен с клиента отправить запрос, содержащий все IP которые стоят на пути к серверу? Поиском пользовался, есть похожие темы, но самого ответа так и не нашел. |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
С одной стороны должен быть внешний статический IP адрес. Противоположная сторона должна открывать TCP соединение с этим IP. Иначе никак
|
|||
|
||||
| KTatsu |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 23.8.2008 Где: Москва Репутация: 1 Всего: 1 |
Не понял... IP у меня статический.
Вот к примеру, щас мне друг послал файл через квип напрямую, у меня написано следующее в квипе: Входящий файл: 123.rar Размер: 3,89 Мб Внешний IP: 92.112.102.*** Внутренний IP: 192.168.1.*, 92.112.102.*** Т.е. для передачи, всетаки клиент использует IP, как внешний, так и внутренний. А вот в случае когда я другу передаю файл, у него пишет так: Входящий файл: 123.rar Размер: 3,89 Мб Внешний IP: 213.141.151.*** Внутренний IP: 127.0.0.1 Этого я вообще не могу понять, чепуха какая-то с внутренним Так что мне делать? Если указывать все IP на пути от провайдера до указанного компа, куда их вписывать, если графа под адрес одна? писать через запятую адреса чтоли? Это сообщение отредактировал(а) KTatsu - 11.5.2009, 19:21 |
|||
|
||||
| xvr |
|
||||||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
IP должен быть не только статический, он еще должен быть доступен снаружи
Но этот IP сервера должен быть, и должен быть доступен снаружи.
|
||||||||||||
|
|||||||||||||
| KTatsu |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 23.8.2008 Где: Москва Репутация: 1 Всего: 1 |
|
||||
|
|||||
| xvr |
|
||||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
Если этот один ВНЕШНИЙ адрес СУЩЕСТВУЕТ - то должно получится. Если его нет - то облом, нужно менять архитектуру построения системы В ПРИНЦИПЕ. Например использовать внешние сервера или proxy
|
||||||||||
|
|||||||||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |