Android搭載のGalaxyタブにsl4aとPythonをインストールしました。私は私のラップトップと私の携帯電話の間で通信するためにPythonのsocket
モジュールを使用して問題に遭遇しました。AndroidでのPythonとのソケット通信
このexampleは、コンピュータ専用の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メッセージ以外のすべてのスクリプトが表示されます。
私は、www.whatismyip.orgからタブのIPアドレスを取得しています。
ローカルソケットプログラミング(つまり、IPアドレス 'localhost'に接続し、タブでクライアントとサーバーの両方を実行する)はうまくいきます。
私は、hereのガイドを使ってファイルを自分のタブに転送しています。
私のプロジェクトの最後の目標は、自分のラップトップでコマンドを実行して、自分のタブからテキストを送信できるようにすることです。私は解決策はすでに存在すると確信していますが、私はそれを自分で行う方法を学びたいと思います!
EDIT:[Added 21/03/12] Wi-Fiネットワークにタブを接続して192.168.0.xxアドレスを使用すると、上のコードがうまく機能することがわかりました(タブとラップトップ間の通信)。これは、問題はコード自体ではなくタブに接続するために使用しているIPアドレスにあると考えています。私は試し続けます。最善の方法に関するアドバイスは、接続するIPアドレス、または私が作成している可能性のあるエラーを理解していただければ幸いです。 AGAIN
EDIT:this questionとthis linkを読んでから、私はスマートフォン(やタブレット)IPアドレスが静的ではありませんので、このような状況では、サーバなどのモバイルデバイスを処理すること、それを行うには間違った方法であると結論しました。私はプログラムの構造を再考するつもりです。 これは相互作用を構造化するのが間違った方法であることを知りましたが、まだそれがなぜ失敗したのか完全に理解していません。私は以前のリンクを読んでから、私がwww.whatismyip.orgから得たIPアドレスは私のタブに固有のものではなく、むしろ私のネットワークプロバイダに属する「バルクIP」であったことから、個々のデバイスに転送されます(ネットワークルーターが接続をネットワーク上の個々のデバイスに転送するのと同じ方法で)。しかし、私はこれを確信しておらず、それを検証する方法について考えることはできません(私と同じネットワーク上の人々を狩る、同じセルエリアに住んでいる人にモバイルIPを求めるのは不十分です)。誰かがこの点を明確にすることができれば、私はとても感謝しています。
@scubboうれしかったです。 –