Я установил sl4a и Python на свой Galaxy Tab на платформе Android.Я столкнулся с проблемами при использовании модуля Python socket
для связи между моим ноутбуком и телефоном.
Этот пример всегда работал хорошо для меня, когда я писал только для компьютерапрограммы на Python, но не работают должным образом при настройке компьютера / вкладки.Вот код, который я запускаю на вкладке:
import socket, android
droid=android.Android()
droid.makeToast('Running...')
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 50111))
droid.makeToast('Socket has been bound')
s.listen(1)
conn, addr = s.accept()
droid.makeToast('Connection has been accepted')
И код, который я выполняю на ноутбуке (где <Tab IP Address
> - это IP-адрес вкладки):
import socket
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('<Tab IP address>', 50111))
Клиентский скрипт (на ноутбуке) выдает следующие ошибки:
socket.error: [Errno 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond
И скрипт на вкладке отображает все, кроме последнего сообщения Toast.
Я получаюIP-адрес вкладки с сайта www.whatismyip.org.
Программирование локального сокета (т.е. подключение к IP-адресу «localhost» и запуск на клиенте и сервере вкладки) работает нормально.
IЯ использовал руководство здесь для передачи файлов на мою вкладку.
Для контекста, конечной желаемой целью моего проекта является возможность отправить текст через мою вкладку, выполнивКоманда на моем ноутбуке.Я уверен, что решения уже существуют, но я хотел бы узнать, как это сделать сам!
РЕДАКТИРОВАТЬ: [Добавлено 21/03/12] Оказывается, что приведенный выше код работает нормально (взаимодействие между Tabи ноутбук), если я подключу вкладку к моей сети Wi-Fi и использую адрес 192.168.0.xx.Это приводит меня к мысли, что проблема заключается в IP-адресе, который я использую для подключения к вкладке, а не в самом коде.Я буду продолжать пытатьсяБуду признателен за любые советы о том, как лучше всего найти IP-адрес для подключения, или об ошибках, которые я мог бы совершить., я пришел к выводу, что IP-адреса смартфонов (и планшетов) не являются статичными, и поэтому рассматривать мобильное устройство как сервер в этой ситуации - неправильный способ сделать это.Я пересмотрю структуру моей программы.Хотя теперь я знаю, что это был неправильный способ структурировать взаимодействие, я до сих пор не до конца понимаю, почему это не удалось.Из-за прочтения предыдущих ссылок я подозреваю, что IP-адрес, который я получал с www.whatismyip.org, был не уникальным для моей вкладки, а скорее был «массовым IP-адресом», принадлежащим моему сетевому провайдеру, с которого затем можно установить соединения.Переадресация на отдельные устройства (так же, как сетевой маршрутизатор может переадресовывать подключения к себе на отдельные устройства в сети).Тем не менее, я не уверен в этом и не могу придумать, как это проверить (если не отыскивать людей в той же сети, что и я, которые живут в той же зоне сотовой связи, и спрашивать их мобильные IP-адреса).Если бы кто-то мог прояснить этот момент, я был бы очень признателен.