2012-08-27 84 views
1

我完成了一個Android客戶端代碼,它的工作;並且暫時應該從apache http服務器接收的數據被仿真以從sd卡獲取數據。Android客戶端連接到Apache上的Python服務器端代碼

現在,我正在使用套接字庫處理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() 

線索,線索是從專家的要求...... 感謝

+0

您可以通過Android設備以外的其他方式連接到您的服務器,例如:您的網絡瀏覽器?如果將服務器主機更改爲'10.0.2.2',該怎麼辦?此外,你的服務器進程可能需要高權限才能綁定到端口80(你是否看到'socket.error:[Errno 13] Permission denied')。 – mhawke

+0

您在客戶端和/或服務器上看到什麼錯誤?您可能只需要調用httpConn.getInputStream()來返回響應。 – Mike

+0

是的,網絡瀏覽器正在工作,已經嘗試了10.0.2.2和服務器的IP地址。此外,python中的代碼不能有10.0.2.2,因爲這是在Apache httpd上的pc上運行的服務器代碼。 – AliR

回答

1

初始解決了這個代碼的問題,這是目標Android版本是3.x + 所以我需要使用不同的線程的網絡ork訪問。已經開始了一個不同的問題的新線程,所以謝謝大家的迴應。

相關問題