Связь между телефоном Android и ПК с использованием TCP в Java - PullRequest
0 голосов
/ 26 января 2011

Я работаю над проектом, в котором я хочу, чтобы мой Droid 2 мог отправлять и получать данные через 3G, на устройство, подключенное к порту Ethernet (не обязательно ПК, но я использую это для тестирования связи). Я верю, что в конечном итоге сквозная связь будет осуществляться через туннель SSL, но сейчас мне просто нужно установить базовую связь, чтобы показать, что устройства могут связываться.

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

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

Полагаю, этот вопрос состоит из двух частей: 1) Возможно ли это? и 2) Нужно ли рутировать мой телефон, чтобы это сделать, или я должен быть в состоянии сделать это без рута?

Спасибо за любые ответы.

Ответы [ 2 ]

1 голос
/ 26 января 2011

Я никогда не работал с телефонами Android, но я думаю:

  1. Вам не нужен root-доступ для использования сокетов;
  2. Вы сказали, что хотите использовать3G, чтобы подключиться к вашему домашнему ПК, и я полагаю, у вас дома есть какой-то маршрутизатор, и вам необходимо настроить сопоставление портов от вашего маршрутизатора до вашего рабочего стола.
0 голосов
/ 26 января 2011

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

Одна потенциальная проблема, которую я вижу, состоит в том, что, в зависимости от вашего провайдера 3G, могут быть ограничения на номера портов и протоколы, которые можно использовать. Например, HTTP к любому номеру порта может быть разрешен, но неизвестные пакетные данные (т.е. неопознаваемый протокол) к тем же номерам портов, которые работают для HTTP, могут быть отброшены.

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

Опять же, еще одна потенциальная проблема - ping (ICMP) не является хорошим тестом для доступа к устройствам в других сетях, так как большинство маршрутизаторов / межсетевых экранов по периметру по умолчанию отказываются от ICMP-трафика (обычно тихо) - даже мой домашний DSL-маршрутизатор / межсетевой экран молча блокирует ICMP по умолчанию. Что касается необходимости использования рутированного телефона для использования приложения ping - мой телефон не рутирован, и у меня есть приложение ping с маркета, которое работает нормально.

Полагаю, этот вопрос состоит из двух частей: 1) Возможно ли это? и 2) Нужно ли рутировать мой телефон, чтобы это сделать, или я должен быть в состоянии сделать это без рута?

Нет никаких причин, по которым я знаю, что это потребовало бы, чтобы телефон был рутирован для использования основанных на сокетах соединений, мне просто интересно, не является ли попытка пропинговать маршрутизатор / брандмауэр не лучшим тестом для того, что вы пытаетесь достичь.

Я бы порекомендовал начать с HTTP - я не знаю, что вы используете для программирования на ПК, но простой HTTP-слушатель должен быть достаточно простым для объединения. Начните с прослушивания порта 80 и попробуйте из браузера Android - если это работает, измените порт прослушивания на что-то вроде 6789 (не забудьте открыть порты на домашнем маршрутизаторе / брандмауэре). Предполагая, что у вас это работает, попробуйте использовать материал на основе сокетов, который вы разработали, используя Wi-Fi в вашей локальной сети, если это работает, то попробуйте через 3G.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...