2014-09-15 4 views
1

У меня есть приложение на базе Windows, которое может выполнять какую-то работу.Обмен сообщениями приложений клиент-сервер через Интернет

Я хочу сделать приложение iOS, которое может отправлять сообщения через Интернет в конкретное приложение, запущенное на конечном компьютере.

Итак, мой вопрос заключается в том, как связать мой клиент iOS и серверные приложения Windows без указания IP-адреса и порта, просто используя какой-то ключ, подобный тому, который работает в Team Viewer, например: серверное приложение имеет набор ключей и паролей а клиентское приложение из другой сети может подключиться к серверному приложению с помощью соответствующего ключа и правильного пароля.

Мне не нужно открывать экран или что-то в этом роде, просто хочу отправить/получить двоичные сообщения.

Есть ли способ подключения приложений без использования некоторых видов веб-сервисов?

Или использовать веб-службу, чтобы установить соединение для клиентских и серверных приложений, а не для управления очередью сообщений?

+1

это можно сделать очень просто, используя AngularJs, но я уверен, что есть некоторые другие способы, которые это можно сделать, а также у нас в настоящее время есть что-то подобное для нашей производственной системы прямо сейчас :) – MethodMan

+2

Даже вы пишете веб-сервис , вам нужно найти этот ресурс через некоторую ip-ссылку? Я не уверен в этом. Но Teamviwer - одноранговое приложение. TV дает номер, но есть серверы-посредники/серверы ретрансляции, которые помогут реализовать ключ и pwd для подключения к человеку. Это число по существу используется для решения одноранговых сетей. –

+0

DJKRAZE, RCBrand, спасибо за ответы Я думаю, что речь идет о peer-to-peer, но я не понимаю, как подключить одноранговую систему iOS к плееру Windows ... Какой протокол (?) Использовать? –

ответ

8

Я верю, что вам нужен одноранговый канал связи между серверным приложением и iOS, главная проблема здесь в том, что вам нужно переходить между NAT между этими двумя устройствами.

Существует несколько способов достижения этой цели, UDP Hole Punching - один из них, который прост в реализации и имеет высокий коэффициент успеха при обходе NAT.

enter image description here

Чтобы установить связь с этим методом, вы по существу необходимы три компонента:

Peer: Традиционный UDP клиент/сервер, это то же самое, как ваш UDP приложение, которое работает по локальной сети.

STUN Server: Сервер для простого обхода протокола пользовательских графов данных (UDP) через трансляторы сетевых адресов (NAT). он просто помогает вам сопоставить свой адрес локального компьютера с общедоступным.

Вам не нужно писать или развернуть свой собственный, есть несколько серверов STUN готовы для общественного пользования, 203.183.172.196:3478 (s1.taraba.net) является одним из них (есть также некоторые реализации с открытым исходным кодом, если вам нужно развернуть свой собственный, например http://sourceforge.net/projects/stun/).

Скомпилированного список общедоступных серверов STUN: https://gist.github.com/zziuni/3741933

Вот простая реализация Клиент STUN с хорошим объяснением: http://www.codeproject.com/Articles/18492/STUN-Client

Rendezvous сервер: простой публичный сервер, который проводит публичные адреса для всех онлайн-партнеров.

связи Шаги:

Объявление

1- Peer запрос сам из STUN сервера, чтобы найти его Public IP: Port адрес.

2- Peer объявляет о себе на Rendezvous Server и устанавливает его статус для связи.

3- A Peer должен периодически обновлять свое состояние и публичный доступ.

Подключение

1- Приложение будет найти публичный адрес целевой Peer от Рандеву-сервера (на основе ID/Знака, ...)

2- Приложение будет установить UDP соединение с при условии общественного IP: адрес порта такой же, как и обычная связь по протоколу UDP.

3 Приложение должно проверять сервер Rendezvous для обновления целевого равноправного публичного адреса/состояния.

ПРИМЕЧАНИЕ: UDP перфорация не будет работать со всеми комбинациями NAT, в таких ситуациях вы должны использовать Relay Server установить соединение, она по существу работает в качестве связующего звена между груш, которые не могут видеть друг друга (их NAT заблокированы)

Я предлагаю вам взглянуть на http://www.brynosaurus.com/pub/net/p2pnat/ для получения дополнительной информации об одноранговой связи через NAT.

+0

лучший ответ когда-либо! Спасибо! –

Смежные вопросы