當前位置:首頁 » 雲伺服器 » android如何連接本地伺服器

android如何連接本地伺服器

發布時間: 2024-08-13 21:46:11

❶ android怎麼和伺服器通訊

基本上是2種方式, HTTP 協議,或者 用Socket。
這2種方式都是需要伺服器端的IP地址。HTTP協議的話,有多種介面可以調用你可以用java類庫封裝的HttpConnection 或者用Apach的開源項目的 HttpGet 或者HttpPost ,伺服器端 需要 編寫 Serlvet來響應客戶端的請求。
Sokcet 的話, 就是 伺服器端 不斷監聽 雙方約定好的埠號,客戶端通過伺服器IP去請求連接,經過握手之後,連接成功,得到Socket 的輸入輸出流,直接操作即可。

❷ 如何實現android和伺服器長連接

1:android客戶端通過service在後台通過servreScoket不斷的accept,一旦有相應的socket到達,則啟動一個線程去處理
2::在線程中處理完返回給我們android客戶端的消息或任務之後,要將這種結果表現在ui上,這個步驟方法就比較多了,例如你可以發一個廣播來通知ui,或者你可以通過一個static的handler來處理
*************************************service中的關鍵代碼
private void startSocketServer()
{
if (!isStarted)
{
try
{
serverSocket = new ServerSocket( 6661 );
isStarted = true;
}
catch (Exception e)
{
// TODO: handle exception
}

// 啟動線程處理
AcceptThread acceptThread = new AcceptThread();
acceptThread.start();
}

}

class AcceptThread extends Thread
{
@Override
public void run()
{
while (isStarted)
{
try
{

// 阻塞接收
Socket client = serverSocket.accept();
initClientSocket( client );
}
catch (Exception e)
{
// TODO: handle exception
}

}
super.run();
}
}

private void initClientSocket(Socket client)
{

boolean isRunnable = true;
/**
* 重置
**/
if (cInputStream != null)
{
try
{
cInputStream.close();
cInputStream = null;
}
catch (IOException e)
{
e.printStackTrace();
}
}

if (clientSocket != null)
{
try
{
clientSocket.close();
clientSocket = null;
}
catch (Exception e)
{
// TODO: handle exception
}
}

String resultStr = "";
clientSocket = client;
try
{
cInputStream = new DataInputStream( clientSocket.getInputStream() );

if (isRunnable)
{
StringBuffer sb1 = new StringBuffer();
int ss;
while ((ss = cInputStream.read()) != -1)
{
sb1.append( (char) ss );
}
resultStr = sb1.toString();
//發送廣播
Intent intent = new Intent();
intent.putExtra( "str", resultStr );
intent.setAction( "com.jone.receiver" );
sendBroadcast( intent );
// Message msg = ((MainActivity)getApplicationContext()).handler.obtainMessage();
// msg.obj = resultStr;
// ((MainActivity)getApplicationContext()).handler.sendMessage( msg );

}

}
catch (Exception e)
{
// TODO Auto-generated catch block
isRunnable = false;
e.printStackTrace();
}

}

❸ 如何實現android和伺服器的長連接

轉載 這種功能實際上就是數據同步,同時要考慮手機本身、電量、網路流量等等限制因素,所以通常在移動端上有一下兩個解決方案:

1.一種是定時去server查詢數據,通常是使用HTTP協議來訪問web伺服器,稱Polling(輪詢);

2.還有一種是移動端和伺服器建立長連接,使用XMPP長連接,稱Push(推送)。

從耗費的電量、流量和數據延遲性各方面來說,Push有明顯的優勢。但是使用Push的缺點是:

對於客戶端:實現和維護相對成本高,在移動無線網路下維護長連接,相對有一些技術上的開發難度。

對於伺服器:如何實現多核並發,cpu作業調度,數量龐大的長連接並發維護等技術,仍存在開發難點。

在講述Push方案的原理前,我們先了解一下移動無線網路的特點。

移動無線網路的特點:

因為 IP v4 的 IP 量有限,運營商分配給手機凳褲終端的 IP 是運營商內網的 IP,手機要連接 Internet,就需要通過運營商的網關做一個網路地址轉換(Network Address Translation,NAT)。簡單的說運營商的網關需要維護一個外網 IP、埠到內網 IP、埠的對應關系,以確保內網的手機可以跟 Internet 的伺服器通訊

GGSN(Gateway GPRS

Support Node 網關GPRS支持結點)模塊就實現了NAT功能。

因為大部分移動無線網路運營商都是為了減少網關的NAT映射表的負荷,所以如果發現鏈路中有一段時間沒有數據通訊時,會刪除其對應表,造成鏈路中斷。(關於NAT的作用及其原理可以查看我的另一篇博文:關於使用UDP(TCP)跨區域網,NAT穿透的心得)

Push在Android平台上長連接的實現:

既然我們知道我們移動端要和Internet進行通信,必須通過運營商的網關,所以,為了不讓NAT映射表失效,我們需要定時向Internet發送數據,因為只是為了不然NAT映射表失效,所以只需發送長度為0的數據即可。

這時候就要用到定時器,在android系統上,定時器通常有一下兩種:

1.java.util.Timer

2.android.app.AlarmManager

分析:

Timer:可以按照計劃或者時間周期來執行相關的任務。但是Timer需要用WakeLock來讓CPU保持喚醒狀態,才能保證任務的執行,這樣子會消耗大量流量;當CPU處於休眠的時候,就不能喚醒執行任務,所以應用於移動端明顯是不合適。

AlarmManager:AlarmManager類是屬於android系統封裝好來管理RTC模塊的管理類。悔粗銷這里就涉及到RTC模塊,要更好地了解兩者的區別,就要明白兩者真正的區別。

RTC(Real- Time Clock)實時鬧鍾在一個嵌入式系統中,通常採用RTC

來提供可靠的系統時間,包括時分秒和年月日等;而且要求在系統處於關碧游機狀態下它也能夠正常工作(通常採用後備電池供電),它的外圍也不需要太多的輔助電路,典型的就是只需要一個高精度的32.768KHz

晶體和電阻電容等。(如果對這方面感興趣,可以自己查閱相關資料,這里就說個大概)

好了,回來正題。所以,AlarmManager又稱全局定時鬧鍾。這意味著,當我用使用AlarmManager來定時執行任務,CPU可以正常地休眠,只有在執行任務是,才喚醒CPU,這個過程是很短時間的。

下面簡單來說明其使用:

1.類似於Timer功能:

//獲得鬧鍾管理器

AlarmManager

am = (AlarmManager)getSystemService(ALARM_SERVICE);

//設置任務執行計劃

am.setRepeating(AlarmManager.ELAPSED_REALTIME, firstTime, 5*1000,

sender);//從firstTime才開始執行,每隔5秒再執行

2.實現全局定時功能:

//獲得鬧鍾管理器

AlarmManager

am = (AlarmManager)getSystemService(ALARM_SERVICE);

//設置任務執行計劃

am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime,

5*1000, sender);//從firstTime才開始執行,每隔5秒再執行

總結:在android客戶端使用Push推送時,應該使用AlarmManager來實現心跳功能,使其真正實現長連接。

❹ Android 如何與本地伺服器進行連接,進行本地服務驗證

在服務端寫一個socket,用死循環的方式監聽本機的某個埠,如30000,用來接收登錄的輸入流,在android端點擊登錄時創建一個對應該埠的socket,把登錄信息寫到輸出流里即可。伺服器端就能判斷出是否允許登錄

❺ android客戶端是如何與電腦的伺服器端相連接,發送請求、得到伺服器的數據、又如何處理這些數據呢

首先,你的電腦必須在某個埠提供了服務

然後,客戶端通過服務建立連接

最後,發送http請求,然後得到響應。


下面給一段最簡單的代碼:

//Get方式請求
publicstaticvoidrequestByGet()throwsException{
Stringpath="https://reg.163.com/logins.jsp?id=helloworld&pwd=android";
//新建一個URL對象
URLurl=newURL(path);
//打開一個HttpURLConnection連接
HttpURLConnectionurlConn=(HttpURLConnection)url.openConnection();
//設置連接超時時間
urlConn.setConnectTimeout(5*1000);
//開始連接
urlConn.connect();
//判斷請求是否成功
if(urlConn.getResponseCode()==HTTP_200){
//獲取返回的數據
byte[]data=readStream(urlConn.getInputStream());
Log.i(TAG_GET,"Get方式請求成功,返回數據如下:");
Log.i(TAG_GET,newString(data,"UTF-8"));
}else{
Log.i(TAG_GET,"Get方式請求失敗");
}
//關閉連接
urlConn.disconnect();
}

具體看代碼注釋,一般都是http請求,android當中也有很多http的請求框架,volley之類的。

❻ android開發中,如何連接伺服器,從伺服器讀取到數據

伺服器端生成JSON:

使用HttpURLConnection連接,通過JSON格式傳遞對象數據

	URLurl=newURL(urlpath);
HttpURLConnectionconn=(HttpURLConnection)url.openConnection();
InputStreaminStream=conn.getInputStream();
=newByteArrayOutputStream();
byte[]data=newbyte[1024];
intlen=0;
while((len=inStream.read(data))!=-1){
outStream.write(data,0,len);
System.out.println(len);
}
inStream.close();
byte[]rlt=outStream.toByteArray();
returnnewString(rlt);

❼ android手機訪問伺服器, 手機和伺服器間怎麼實現

手機可以直接訪問伺服器呀,只要APN設置好。能上網就行。其實和電腦一樣,IP訪問,只不過是移動網路幫你以ip方式訪問公網伺服器地址

❽ 【求助】android系統如何簡單地訪問伺服器

Android的網路編程分為2種:基於http協議的,和基於socket的。Socket一般應用於社交聊天的應用中,這里關聯的比較少就不講了,我們來說說基於HTTP協議的編程。

基本原理 : 它的工作原理特別的簡單,就是客戶端向伺服器發出一條HTTP 請求,伺服器收到請求之後會返回一些數據給客戶端,然後客戶端再對這些數據進行解析和處理就可以了。

HTTP請求:HttpURLConnection 和 HttpClient

伺服器端返回客戶端的內容:
1)以HTML代碼的形式返回。
2)以XML字元串的形式返回。返回的數據需要通過XML解析(SAX、DOM,Pull,等)器進行解析。
3)以json對象的方式返回。

熱點內容
安卓的face怎麼使用 發布:2024-11-26 15:05:50 瀏覽:88
存儲魔力象限2016 發布:2024-11-26 15:04:47 瀏覽:865
QQ填寫驗證碼是歷史密碼是什麼 發布:2024-11-26 15:04:16 瀏覽:505
vs2017編譯文件無效或損毀 發布:2024-11-26 15:04:16 瀏覽:597
騰訊微信如何更改登錄密碼 發布:2024-11-26 14:57:46 瀏覽:21
pythondict參數 發布:2024-11-26 14:49:41 瀏覽:105
ubuntu安裝linux源碼 發布:2024-11-26 14:48:52 瀏覽:744
百度雲解壓密碼忘記 發布:2024-11-26 14:35:36 瀏覽:863
最差擬合演算法 發布:2024-11-26 14:21:17 瀏覽:739
指令式編程 發布:2024-11-26 14:16:24 瀏覽:19