私は多少珍しい問題があります。私は、ADB(SL4Aと一緒に設定されている)を介して私のアンドロイドスマートフォンでいくつかのコードを実行したいと思うし、私はそれがサーバーとして動作し、私のホストマシンがクライアントとして動作し、データ。しかし、私はソケット操作の専門家ではなく、理解できない結果を得ています。ADBでPythonソケットスクリプトを実行
from device import android
import socket
droid = android.Android()
# Open socket
s = socket.socket()
HOST = socket.gethostname()
PORT = 8000
s.bind((HOST, PORT))
s.listen(5)
print "HOST = ", HOST, ", PORT = ", PORT
# Accept instructions
c, addr = s.accept()
print "Got connection from", addr
data = ""
while True:
chunk = c.recv(1024)
if (not chunk):
break
else:
data.extend(chunk)
s.close()
# DO STUFF WITH RECEIVED INPUT
# Send result
c, addr = s.accept()
print "Got connection from", addr
while True:
if (c.send(str(result)):
break
s.close()
私は、クライアント上で実行しているコードは、私のホストマシン、以下のとおりである:私のコードは次のとおりです
s = socket.socket()
HOST = "localhost"
PORT = 8000
s.connect((HOST, PORT))
s.send(data)
s.close()
# IN A DIFFERENT FUNCTION
s = socket.socket()
HOST = "localhost"
PORT = 8000
try:
s.connect((HOST, PORT))
results = s.recv(1024)
s.close()
return results
except Exception:
return False
環境がこのように設定されています:
set AP_PORT=54023
adb forward tcp:%AP_PORT% tcp:%AP_PORT%
サーバーが私のAndroidスマートフォンで動作するように設定されており、自分のPC上で実行されている別のプログラムからAndroidスマートフォンでプログラムを実行するための入力を受け入れるように設定されています。 Androidプログラムの実行が終了したら、結果を自分のPCに送り返す必要があります。
しかし、いくつか問題があります。私は最初の接続を開くことができないようです。私は10061年代と100年代のどちらかを取得していますが、私はそれがなぜなのか分かりません。私は利用可能な既存のドキュメントを見てきましたが、私はまだ結果を得ていません。私はまた、このコードがAndroidデバイス上で実際に動作しているかどうかもわかりません。これは私のアプリケーションにとって非常に重要です。
すべての啓発は非常に高く評価されるでしょう。
はい、それは問題です。私が受け取った後、 'data' varは空です。何が起こっているのかわかりません。 – Woody1193
Okとc.send()は何の値を返しますか?あなたはPython 3を使用していますか? – JumpAlways
私が知る限り、値は返されていません。私は私のホストマシンでPython 2.7.6を使用しています。アンドロイド(Python 3に対応しています)では2.6.2です。 – Woody1193