通过ADB运行Python套接字脚本

时间:2016-03-21 04:17:46

标签: android python sockets adb

我有一个不寻常的问题。我想通过ADB在我的Android智能手机上运行一些代码(它已经与SL4A一起设置)然后我希望它充当服务器并响应程序的结果,而我的主机充当客户端并接收此数据。但是,我不是套接字操作的专家,而且我得到的结果我不明白。我的代码如下:

$('#btn_save').click(function (){
        $('#message-box').slideDown('slow').delay(3500).slideUp('slow');
    });
    enter code here

我在主机客户端上运行的代码如下:

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

所以,这应该如何工作:服务器设置为在我的Android智能手机上运行并接受输入,以便从我的PC上运行的另一个程序在我的Android智能手机上运行该程序。 Android程序运行完毕后,应将结果发送回我的电脑。

但是,我有几个问题。我似乎无法打开第一个连接。我要么得到10061还是10049,我不确定为什么会这样。我查看了现有的文档,但我还没有得到结果。我也不确定此代码是否实际在Android设备上运行,这对我的应用程序非常重要,所以我真的需要对此进行某种确认。

任何启蒙都会受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

服务器程序在到达异常之前永远不会结束,因为您设置了一个inf循环:while True
c.close()关闭当前连接,然后循环再次启动,程序等待另一个连接接受。

主程序应改为在发送消息后或到达异常时结束。

你是什么意思:“我得到的结果我不明白......这段代码运行没有错误...我遇到的问题是我没有得到任何结果“

你得到了什么结果?你检查了data var?