2011-09-01 88 views
7

一個HTTP服務器我已經通過WIFI提供同一局域網上的兩個Android應用:如何實現在Android

  1. 應用程序打開端口8033
  2. 應用(B)一個監聽套接字(A),其使用HttpClient訪問端口8033上的(A)

如何使(A)可能對(B)執行POST和GET請求?
(A)訪問(B)所使用的URL是什麼樣的?

感謝所有。

+0

@Jonas他的問題不是客戶端是否可以同服務器而在於是否可以的HttpClient來,他的其他應用程序正在聽一個服務器socket通信尋源,很容易理解的樣本。 –

回答

12

您可能會混淆兩個不同級別的網絡通信。

4級:兩個套接字之間的TCP連接。
到側之間的邏輯管道(?可以是單(兩個處理)或兩個不同的計算機) 僅連接處理數據是手柄在這個水平

等級7:瀏覽器/應用程序服務器所使用的特定通信「語言」交換高級數據(文件,圖像,音頻..)並在此級別進行處理。

你的問題是打開一個Listening Socket(級別4)和一個與HTTP協議(級別7)交談的客戶端。

所以你很想填補差距插座偵聽端來處理HTTP協議
可能是一個java web服務器實現可能會幫助你。

+0

好的,謝謝。但是我在哪裏可以找到Android&TJWS的工作示例。我看了一下URL,但是我在java中是一個完整的noob,所以如果我得到一些代碼,那麼對我來說它會很容易理解。 – KhanZeeshan

+0

Tiny Java Web Server實現由JEE(java企業版)定義的標準servlet容器:所以我的建議是1)尋找「如何在android項目中實現第三方庫/ jar」2)瞭解更多java標準版(經典版)和企業版(典型用於應用程序服務器的Java),請參閱http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/Servlets.html ..請參閱示例http:/ /www.apl.jhu.edu/~hall/java/Servlet-Tutorial/Servlet-Tutorial-First-Servlets.html –

+0

我碰到這個鏈接「http://www.androiddevblog.net/android/a-bare-最低網絡服務器爲Android平臺「,這正在做我認爲正是我想要的。你會同意嗎? – KhanZeeshan

1

監聽端口並接受套接字連接不足以將數據提供給HttpClient。實際上套接字提供了一個物理管道,但對沿着該管道流動的數據的格式一無所知。如果您使用HttpClient,那麼您需要讓您的服務器應用程序瞭解HTTP協議(或至少它的一個非常基本的子集)。

如果您只需要兩個進程以某種方式進行通信,那麼您最好將服務器應用程序作爲服務,然後您的客戶端應用程序會詢問所需數據的此服務。

+0

我怎樣才能讓服務器套接字瞭解HTTP協議,抱歉,我忘了寫客戶端將在其他Android設備和服務器將在不同的。 – KhanZeeshan

+0

「物理管道」可能是一個限制性的觀點......在單個設備上,您可能有一個監聽套接字和一個客戶端。沒有任何物理鏈接 –

+0

我發現HTTPClient的許多示例查詢web服務器和普通的服務器和客戶端套接字通信在Java中,但我找不到任何示例實現HTTP協議等服務器套接字示例。 – KhanZeeshan