我有一个不寻常的问题。我想通过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设备上运行,这对我的应用程序非常重要,所以我真的需要对此进行某种确认。
任何启蒙都会受到高度赞赏。
答案 0 :(得分:1)
服务器程序在到达异常之前永远不会结束,因为您设置了一个inf循环:while True
。
c.close()
关闭当前连接,然后循环再次启动,程序等待另一个连接接受。
主程序应改为在发送消息后或到达异常时结束。
你是什么意思:“我得到的结果我不明白......这段代码运行没有错误...我遇到的问题是我没有得到任何结果“
你得到了什么结果?你检查了data
var?