Как я могу передавать данные между двумя приложениями Delphi через Интернет? - PullRequest
5 голосов
/ 30 ноября 2010

Привет, позвольте мне прояснить мой вопрос.Два человека, использующие мое приложение, подключены к Интернету.У обоих есть IP-адреса друг друга, и они хотят общаться (как Y! Messanger) друг с другом.Я думаю, что мне нужно использовать компоненты Indy;право?Какой компонент я должен использовать?Заранее спасибо

Ответы [ 4 ]

4 голосов
/ 30 ноября 2010

Вы смотрели какие-нибудь демонстрации на сайте Indy еще?

3 голосов
/ 30 ноября 2010

Подобно тому, что сказал Скотт, я думаю, что ваша самая большая проблема - это заставить их разговаривать друг с другом.Мои компьютеры дома проходят через маршрутизатор, который блокирует все входящие запросы на соединение (т.е. запросы на начало разговора между двумя компьютерами) из Интернета.Мои компьютеры могут отправлять запросы на подключение OUT и начинать разговор таким образом, но если вы не измените маршрутизатор (переадресация портов), мои компьютеры не смогут получать запросы на подключение.

Вам нужен сервер где-то, к которому оба человека будут подключаться, которые могут затем передавать сообщения туда и обратно.Чтобы быть действительно сложным, как только соединение с сервером установлено, два компьютера могут затем быть установлены в прямой контакт, но это включает пакеты UDP и некоторую хитрую магию.

3 голосов
/ 30 ноября 2010

Как правило, вы хотите создать приложение типа «клиент / сервер».Быстрый поиск в Google по «примеру клиентского сервера indy» позволяет получить множество результатов, включая этот: http://www.devarticles.com/c/a/Delphi-Kylix/A-Real-World-Client-Server-Application-in-Delphi/

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

2 голосов
/ 30 ноября 2010

Вам не нужно использовать компоненты Indy, вам просто нужно что-то, что будет обрабатывать коммуникации по сети.Подойдет любой сетевой стек HTTP или сокетов.Indy - это стандарт де-факто для Delphi Win32.

Чтобы осуществлять сетевые коммуникации, вам потребуется создать объект или службу слушателя на машине A и объект отправителя на машине B, чтобы отправить сетевое сообщение от A к B.Чтобы отправить сообщение от B к A, вам также понадобится обратный путь - всего 4 объекта для выполнения двунаправленной связи.Некоторые обертки объекта скрывают эту деталь внутри.Я не припомню, скрывает ли это Indy.

Вероятно, было бы проще всего использовать общий протокол TCP / IP для обмена данными между компьютерами, например HTTP.Это облегчит получение ваших соединений через межсетевые экраны и прокси, которые часто существуют между произвольными пользователями.Чтобы избежать конфликтов с любыми веб-службами HTTP, которые могут работать на любом компьютере, следует использовать настраиваемый номер порта с IP-адресом: 192.168.1.10:12345, а не стандартный порт 80 веб-сервера HTTP. Это то, что в большинстве IMклиенты делают.

...