2011-07-30 43 views
1

我想建立一個HTTP服務器,這將成爲android的聊天應用的請求。因爲我真的很困惑...在我的代碼中,我必須使用套接字?我如何讓客戶端與服務器進行通信?爲了接受來自客戶端的請求並對它們做出響應,我必須在服務器中添加哪些代碼?我在客戶端使用的代碼如下:服務器在Java中(HTTP /插座)

DefaultHttpClient client = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost("http://localhost:80"); 
List<BasicNameValuePair> nvps = new ArrayList<BasicNameValuePair>(); 
nvps.add(new BasicNameValuePair("username", username1)); 
nvps.add(new BasicNameValuePair("password", password1)); 
try { 
    UrlEncodedFormEntity p_entity = new UrlEncodedFormEntity(nvps, HTTP.UTF_8); 
    httppost.setEntity(p_entity); 

      //Execute HTTP Post Request 
      HttpResponse response = client.execute(httppost); 
      Log.v(TAG,"something"); 
      Log.v(TAG, response.getStatusLine().toString()); 
      HttpEntity responseEntity = response.getEntity(); 

請真的需要一個答案。謝謝!!!

回答

1

插座(插座爲客戶端,爲的ServerSocket服務器)是通信的最基本層。您選擇了TCP或UDP並通過它,您需要對您的所有協議進行編碼。

還有一些庫編碼更高級別的協議(HTTP,FTP,甚至更高的SOAP)。如果使用這些庫,則通常不需要管理套接字,因爲它是由庫本身完成的(在服務器中,您只指定要綁定的端口和可選的IP;在客戶端中指定要連接的主機和端口)。

您可以使用不同的組合(例如,使用SOAP實現您的服務器,然後使用Socket從客戶端創建和發送SOAP消息),但最簡單的方法是爲服務器和客戶端使用相同的庫。

哪一個更好:取決於你想要的。更高級別的庫更加靈活,但可能需要一定時間才能掌握,可能會有更多開銷,更低級別的需求來管理一切。如果沒有更具說服力的理由,我通常只使用HTTP協議(都來自JVM或來自Apache Foundation項目)。

+0

謝謝您的回答。現在對我來說似乎更清楚了。謝謝! – anna