Android客戶端與PC伺服器實現Socket通訊(wifi)
本文介紹Android終端持續掃描AP資訊併發送給伺服器端的實現。首先基於TCP協議在Android終端和PC兩端之間形成網路虛擬鏈路。使用ServerSocket建立TCP伺服器端,然後在Android客戶端使用Socket的構造器來連線伺服器。其中Android終端通過WIFI連線和PC處於同一區域網。
1. PC伺服器啟用ServerSocket
兩個通訊實體在建立虛擬鏈路之前,需要有一方先準備好,主動接受來自其他通訊實體的連線請求。
使用ServerSocket物件監聽來自客戶端的Socket連線
//建立ServerSocket物件
//by wayne from www.cnblog.com/dwayne/ServerSocket ss = new ServerSocket(30000); //監聽來自客戶端的請求 while(true){ Socket s = ss.accept(); … }
如果沒有連線,則將一直處於等待狀態。
當接收到連線請求後,獲取訊息到輸入流,並儲存到檔案。
//接收客戶端訊息
//by wayne from www.cnblog.com/dwayne/
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream())); String str; BufferedWriter bw= new BufferedWriter(new FileWriter("D:/ApInfo"+ (i++) +".txt")); while ((str = in.readLine()) != null) { System.out.println(str); bw.write(str); bw.newLine(); }
2. Android終端使用Socket通訊
客戶端使用Socket的構造器連線伺服器,指定伺服器IP和埠號就可以了。
Socket s = new Socket(“192.168.1.100”, 30000);
這樣伺服器端的accept()方法就得到響應,從而向下執行,伺服器端和客戶端就形成了一對互相連線的Socket。再進行通訊時就沒有伺服器和客戶端之分了,都是通過輸入輸出流進行通訊。
詳細步驟
採用Handler和TimerTask來定時掃描AP資訊併發送給伺服器端。
TimerTask規定了到達指定的時間所要進行的任務。
TimerTask task = new TimerTask(){ public void run() { Message message = new Message(); message.what = 1; handler.sendMessage(message); } };
handler傳遞message內容:
Handler handler = new Handler(){ public void handleMessage(Message msg) { switch (msg.what) { case 1: // 執行定時器時間到了之後由handler傳遞的任務 break; } super.handleMessage(msg); } };
因為需要持續執行掃描任務,所以啟用新執行緒執行定時任務
//啟動單獨執行緒定時向伺服器傳送AP資訊
//by wayne from www.cnblogs.com/dwayne
new Thread(){ @Override public void run() { // TODO Auto-generated method stub timer.schedule(task, 2000,10000); //在2秒後每10秒執行一次定時器中的方法 } }.start();
接下來掃描AP資訊併發送給伺服器端,然後將結果儲存。
WifiManager wifiManager=(WifiManager) getSystemService(WIFI_SERVICE);
wifiManager.startScan();
mWifiList = wifiManager.getScanResults();
由WifiManager說明可知,它可以用於處理已配置的網路,當前連線的網路及AP資訊的掃描等情況。
This class provides the primary API for managing all aspects of Wi-Fi connectivity. Get an instance of this class by calling Context.getSystemService(Context.WIFI_SERVICE). It deals with several categories of items:
- The list of configured networks. The list can be viewed and updated, and attributes of individual entries can be modified.
- The currently active Wi-Fi network, if any. Connectivity can be established or torn down, and dynamic information about the state of the network can be queried.
- Results of access point scans, containing enough information to make decisions about what access point to connect to.
- It defines the names of various Intent actions that are broadcast upon any sort of change in Wi-Fi state.
向伺服器傳送訊息:
socket = new Socket("192.168.1.211",30000); //向伺服器端傳送訊息 PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true); out.println(message);
其中message為獲取的AP資訊
測試收到的資訊格式為:
SSID: ICIS_LAB, BSSID: 1c:af:f7:9a:65:e4, capabilities: [WPA-PSK-TKIP+CCMP], level: -80, frequency: 2437
相關推薦
Android客戶端與PC伺服器實現Socket通訊(wifi)
本文介紹Android終端持續掃描AP資訊併發送給伺服器端的實現。首先基於TCP協議在Android終端和PC兩端之間形成網路虛擬鏈路。使用ServerSocket建立TCP伺服器端,然後在Android客戶端使用Socket的構造器來連線伺服器。其中Android終端通過WIFI連線和PC處於同一區域網
Android客戶端與雲伺服器進行網路通訊
多寫技術文件,多寫技術文件,多寫技術文件,重要的事情說三遍...... ---------------------------------------------------------------------------------------------------
實現Android客戶端與Eclipse伺服器端基於Okthhp簡單通訊
最近在重溫知識,所以藉此機會也想把自己寫的一些心得寫出來供大家分享,寫的有誤或者不好的地方望大家見諒,好了,廢話少說,直接進入正題,下面給大家介紹的就是基於目前主流網路通訊框架的okhttp實現的Android與Eclipse通訊。首先說明:我用的Android客戶端是And
Android客戶端與Tomcat伺服器通訊實現登入驗證
一.功能描述 在Android客戶端實現登入介面,當將使用者名稱和密碼填入文字框並點選登入按鈕時,將認證資訊傳送至Tomcat伺服器進行認證,若使用者名稱和密碼匹配,則Android客戶端提示登入成功,否則提示登陸失敗。 二.開發環境 Android客戶端:Andro
Android客戶端與PC進行Socket通訊
伺服器端程式碼: import java.io.IOException; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; public class Si
Android客戶端與java伺服器端的Socket連線
開發十年,就只剩下這套架構體系了! >>>
Android客戶端與本地服務器Socket通信
msg 初始化 ips print rmi listener 個數 myeclips 開啟 Android客戶端與本地服務器Socket通信 Socket服務器運行結果圖?? 一.客戶端和服務器端的選擇: 客戶端是我們手機端,關於服務器端,只要安裝了JDK,自然就擁有通
XMPP學習——Android客戶端與openfire伺服器單雙向TLS通訊
本文從TLS安全傳輸層協議的簡單流程、如何生成自簽名CA證書、自頒發伺服器&客戶端證書、配置openfire伺服器安全連線去描述如何建立一個使用TLS加密的XMPP聊天通道。 這裡的smack版本是V4.2.3,openfire伺服器版本也是V4.2.3
android客戶端+JAVA WEB伺服器實現json資料解析
import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.But
android客戶端與php伺服器的json資料簡單互動(二)
上一篇文章講的是最簡單的通過接送的格式完成android客戶端與php伺服器互動,也就是通過JSONObject物件來進行互動。 從上篇的文章程式碼就可以看出來,如果php陣列僅僅採用鍵值對的方式進行儲存,通過很簡單的方式轉換為json格式,之後在andr
android客戶端與servlet伺服器互動簡單示例
前段時間需要寫一個能雙向解析XML的程式,但是客戶端只能從伺服器裡讀,但是死活傳不上去,倒騰了兩天終於搞好了。 下面直接貼示例程式碼,不明白的話再問吧。 這是android客戶端,記得得在AndroidManifest.xml檔案裡新增INTENET許可權。 publ
Android客戶端與Java tomcat之間HTTPS通訊
文中涉及到https認證和post傳參。 不使用SSL(Secure Sockets Layer)/TLS的HTTP通訊就是不加密的通訊,所有資訊都已明文傳播,容易被竊取、篡改或冒充。SSL/TLS協議的基本思路是採用公鑰加密法:客戶端先向伺服器端索要公鑰,
android中利用Socket實現手機客戶端與PC端進行通訊
伺服器端: import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; impor
android客戶端與部署到tomcat的servlet伺服器之間實現http通訊
博主目前小白,為了完成這個踩到不少地雷,在此處記錄下,可能錯誤忘記了,以後想起來再更新。 伺服器端: public class Servlet extends HttpServlet { @Override protected void doPo
Unity 與C#伺服器 實現Socket的UDP通訊(多客戶端)
前言 上一篇簡單的介紹了下Unity客戶端和伺服器的Socket通訊,但是還不能實現多個客戶端與伺服器的通訊,所以今天在這邊把前面的工程完善一下(使用的是上篇講到的UdpClient類來實現),實現多個客戶端與伺服器的udp通訊。效果圖如下,兩個客戶端可以向伺服器傳送訊息,
Mina長連線框架實現Android客戶端與伺服器端通訊
一、概述 Apache Mina Server 是一個網路通訊應用框架,也就是說,它主要是對基於TCP/IP、UDP/IP協議棧的通訊框架(當然,也可以提供JAVA 物件的序列化服務、虛擬機器管道通訊服務等),Mina 可以幫助我們快速開發高效能、高擴充套件
android客戶端與伺服器端互動 如何保持session
最近在開發專案的過程中,遇到android與web伺服器要在同一session下通訊的問題。 在解決問題前先回顧下Session與Cookie: Cookie和Session都為了用來儲存狀態資訊,都是儲存客戶端狀態的機制,它們都是為了解決HTTP無狀態的問題而所做
Android 客戶端與伺服器端進行資料互動(一、登入伺服器端)
概要 安卓APP要實現很多功能(比如登入註冊、發表評論等)時都必須要使用到網路資料互動。所以在學習了這部分內容後,就將其以最常見的登入過程為例整理出來,也方便跟我一樣的新手能迅速學習上手。 預期效果圖如下,輸入手機號和密碼,點選Login按鈕,上傳資料到伺
Android客戶端與伺服器端的json資料互動(很詳細)
Android客戶端與伺服器端的json資料互動,主要是通過json形式的資料互動,就是json的寫入和解析。 先看效果圖,我最討厭講東西,一個圖沒有的。 算了,看來我不是寫部落格的材料,寫不下去了,要排版之類的麻煩,大家還是直接去下載原始碼,裡面有大量的注
Android客戶端與伺服器進行通訊
在Android開發中,經常使用到與後臺進行互動,後臺人員給你一個URL,Android使用HttpURLConnection得到後臺返回的資料。這些任務是開發中經常遇到的。這裡,我們自己搭建一個簡易的後臺,來實現Android客戶端與後臺的互動。 首先,後臺