Обмен сообщениями клиент-серверного приложения через Интернет

1

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

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

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

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

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

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

  • 1
    это можно сделать очень простым способом, используя AngularJ, но я уверен, что есть и другие способы сделать это, так как сейчас у нас есть нечто подобное для нашей производственной системы :)
  • 2
    Даже если вы пишете веб-сервис, вам нужно найти этот ресурс через какую-то ip-ссылку, верно? Я не уверен насчет требования. Но Teamviwer - это одноранговое приложение. Телевизор дает номер, но есть посреднические серверы / серверы ретрансляции, которые помогут реализовать ключ и pwd для подключения к нужному человеку. Этот номер в основном используется для адресации одноранговых сетей.
Показать ещё 1 комментарий
Теги:
networking
sockets
stream

1 ответ

8
Лучший ответ

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

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

Изображение 174551

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

Peer: традиционный клиент/сервер UDP, он аналогичен вашему UDP-приложению, которое работает в локальной сети.

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

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

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

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

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

Шаги коммуникации:

Объявление

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

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

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

соединение

1- Приложение найдет открытый адрес целевого Peer из Rendezvous Server (на основе ID/Token,...)

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

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

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню