【发布时间】:2012-08-27 01:35:52
【问题描述】:
我完成了一个 Android 客户端代码,它的工作;并且暂时模拟了应该从apache http服务器接收的数据以从sd卡获取数据。
现在,我正在使用套接字库编写 Python 中的服务器端代码;并测试 python 套接字文档中的默认套接字示例。
我面临的问题是Android客户端无法连接到这个服务器端代码。
Android 端代码尝试连接:
urlString = "http://10.0.2.2/cgi-bin/serverconnect.py";
URL url = new URL(urlString);
URLConnection conn = url.openConnection();
HttpURLConnection httpConn = (HttpURLConnection) conn;
try{
httpConn.connect();
......
}
serverconnect.py 在哪里:
# Echo server program
import socket
HOST = '127.0.0.1' # Symbolic name meaning all available interfaces
PORT = 80 # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
while 1:
data = conn.recv(1024)
if not data: break
conn.sendall(data)
conn.close()
需要专家提供线索和提示... 谢谢
【问题讨论】:
-
你能从你的安卓设备以外的东西连接到你的服务器吗?你的网络浏览器?如果将服务器主机更改为
10.0.2.2会怎样?此外,您的服务器进程可能需要高权限才能绑定到端口 80(您看到socket.error: [Errno 13] Permission denied)。 -
您在客户端和/或服务器上看到了什么错误?您可能只需要调用 httpConn.getInputStream() 即可返回响应。
-
是的,网络浏览器正在工作,已经尝试了10.0.2.2和服务器的IP地址。此外,python 中的代码不能有 10.0.2.2,因为这是在 apache httpd 上的 pc 上运行的服务器代码。
-
@mhawke:没有错误,可以看到。代码只是在 httpcon.connect() 上抛出 IO 异常
-
无法从安卓以外的浏览器访问服务器。任何提示如何使这个运行......
标签: android python client-server server-side