Если у вас были оба IP-адреса, и оба они были маршрутизированы, это должно быть возможно. Я не уверен, что если IP-адреса, выданные сетью 3G, будут маршрутизироваться. Если вы используете WIFI, IP-адрес, который вы получаете, почти наверняка не является маршрутизируемым. Предполагая, что у вас есть маршрутизируемый IP-адрес, это должно быть возможно.
Хитрость - это просто открытие IP-адреса другого устройства. Лучший способ сделать это, вероятно, состоял бы в том, чтобы каждое устройство регистрировало свой IP-адрес с помощью веб-службы, когда ваше приложение запускается, а затем запрашивает эту службу, чтобы найти IP-адреса других устройств.
Может оказаться немного сложным управлять «незарегистрированными» IP-адресами при закрытии приложения или при изменении IP-адреса, но это должно быть выполнимо.
ETA:
Если у вас есть сервер, на котором они оба подключения, вы должны быть в состоянии реализовать решение с использованием этого сервера (т.е. без телефонов на самом деле непосредственно соединяющих друг с другом). Это позволит избежать проблемы с маршрутизируемыми IP-адресами для телефонов.
Что касается того, как соединить сокеты вместе - ваша серверная программа будет в основном работать как оператор телефонной связи старой школы. У вас будет какая-то регистрация & протокол обнаружения, встроенный в серверное программное обеспечение, позволяющее телефону регистрироваться на сервере, запрашивать список других телефонов, подключенных в настоящее время к серверу, указать, к какому телефону он хочет поговорить, и принимать соединения с других телефонов.
Как только он узнает, кто хочет поговорить с кем, ваше серверное программное обеспечение соединит их вместе, прочитав их из одного сокета и записав эти данные в гнездо другого телефона.
Почему субъективный? –
Субъективно, потому что я открыт для любых мнений о том, как я должен/мог приближаться к этому. Благодаря! –
Это не то, что субъективно. Это довольно объективно. Retagged. Я aloso удалил в реальном времени, потому что это тоже не «в реальном времени». –