android與pc通信
1. android服務端與電腦pc上c++的客戶端 實現socket通信
1、android上的伺服器分兩種:
① 用 java 寫的,這種比較簡單,但是需要注意的它的代碼已經被轉換成了大端了,pc上用c++寫傳結構體;
② 用 c/c++ 寫的,這種方式進行和pc上的通信比較的方便,客戶端和伺服器段可以都通過結構來傳遞,唯一需要考慮的是位元組對其的問題,可以用兩個預處理指令(可以跨平台的)處理;
2、源碼的話,我雖然有但是屬於公司的項目代碼,不方便的;
我是ndk吧的吧主,希望大家關注一下ndk吧,有問題的話也可以到裡面留言哦,ndk吧的鏈接:
http://tieba..com/f?kw=ndk 謝謝!
2. android怎麼與pc上的進程進行rpc通信
理解Android系統的進程間通信原理(二)----RPC機制
理解Android系統中的輕量級解決方案RPC的原理,需要先回顧一下JAVA中的RMI(Remote Method Invocation)這個易於使用的純JAVA方案(用來實現分布式應用)。有關RMI的相關知識,可以通過下圖來歸納:
RMI原理 (2)
Android中的RPC也是參考了JAVA中的RMI方案,這里我們再詳細了解一下RPC的實現過程。
Android中的RPC機制是為了實現一個進程使用另一個進程中的遠程對象,它使用了Android自己的AIDL(介面定義語言),使用戶很方便地定義出一個介面作為規范,通過一個遠程Service為代理 ,客戶端在綁定該遠程Service過程中獲取遠程對象,進而使用該對象。可參考下圖所示:
Android的RPC原理及應用 (2)
補充:RPC的另一個目的是對客戶端只聲明介面及方法,隱藏掉具體實現類,供客戶端直接獲取此介面實例。
實例代碼:
實例一:通過Service來遠程調用一個介面子類的函數方法
功能描述:在MainActivity中通過綁定MyService服務類,來遠程調用MyPlayer(實現了IPlayer介面)的方法過程。需要定義一個IPlayer.aidl文件,ADT工具會自動生成一個IPlayer介面類,然後再由MyPlayer繼承IPlayer介面類中的靜態內部抽象類,實現介面方法,進而供其它應用程序遠程調用。(在本例中為了方便,MainActivity與MyService類同處一個應用程序中,實現運用時,可以不在同一個應用程序中,只要有許可權訪問MyService服務,就能得到IPlayer介面,進而執行該介面實例方法)
程序清單:IPlayer.aidl
3. Android 手機通過usb 與 pc 進行通信,不要使用adb
沒驅動恐怕是不行吧,沒有驅動的話連接電腦就只是手機充電。就連豌豆莢,91這些軟體都是要安好驅動在管理的。只是可以不打開sd卡進行sd卡的管理
4. android手機與pc通訊
Android手機和PC通信,即USB的通信支持有兩種模式:
HOST模式:Android設備為USB匯流排和外設供電,數據傳輸是雙向的。
Accessory模式:即附件模式,Android作為附件,手機和電腦連接,通常是這種模式,由USB Device端向匯流排供電,數據傳輸方向是雙向的。這就是為什麼手機插到電腦上可以充電的原因。
在討論具體代碼之前,需要先講一下再host模式下面的調試辦法,因為數據線的埠被外設使用了,那麼,傳統的連接數據線調試的方法已經不行了。官網給出了解決辦法:
1、請把Android設備用數據線連接到電腦,當然,也要把Android設備的wifi打開。
2、在windows命令行下,進入SDKplatform-tools/目錄(具體看SDK安裝在哪個目錄了),執行adb tcpip 5555回車。這里其實是打開了adb調試的無線埠(Android設備在電腦上的埠映射),其實後面的數字可以隨便來,只要埠沒有被佔用。
3、adb connect <device-ip-address>:5555鍵入回車,這里的device-ip-address是Android端的IP地址。
4、最後adb usb回車,假如沒有問題,現在已經可以在eclipse上看到logcat的輸出了。
其實還有個簡單的辦法,可以在應用商店上下一個無線ADB工具,隨便哪個都可以,這類工具就是在Android端做了上面的那些工作,而且還不用連數據線,但是第三步的那個操作還是要在windows的命令行窗口手動輸入的。
5. 安卓系統怎麼連接電腦
1、安裝91手機助手:下載91手機助手,下載完成後雙擊圖標並根據提示進行安裝。
2、打開手機USB調試模式
①在安卓手機找到系統設置(設置)點擊進入
②點擊設置界面的【應用程序】
③點擊【開發】
④打鉤【USB調試模式】至此手機USB調試模式打開完成。
3、講手機通過USB數據線插入電腦的USB埠
4、啟動91手機助手
5、91手機助手會自動識別所插入的手機型號
並下載對應的驅動,驅動安裝完成後手機即可被識別並連接到電腦
5、同時91手機助手將在你的手機內安裝手機版,用於數據的同步。同時方便你在數據流量環境下下載安裝游戲及應
安卓手機手動安裝USB驅動連接到電腦
驅動下載:推薦下載各機型自己的驅動,沒有的話可以嘗試用萬能驅動
安卓平台手機萬能驅動點擊下載
本驅動提供XP,Vista系統x86晶元的驅動,其中Vista系統還包括64位系統的專用驅動。針對AMD晶元也給出了專 門 的驅動,用戶可以根據自己的晶元和系統進行選擇。
開啟手機中USB調試
進入「設置」->「應用程序」->「開發」勾選「USB調試程序」。這樣設備才可以通過USB連線時被PC識別到。
方法一、手動安裝驅動
將已經開啟「USB調試」的手機通過USB線連接PC,下面就要開始手動安裝驅動的過程。 右擊「我的電腦」選擇「屬性」就進入「系統設置」頁面。在「硬體」標簽頁打開「設備管理器」。
在「設備管理器」面板我們可以看到其中「Android USB Devices」設備有個黃色的感嘆號,表示這個設備還不能正常使用,需要安裝驅動。
系統會自動跳出硬體安裝向導,如果沒有跳出可以通過右擊帶有黃色感嘆號的設備,選擇「更新驅動程序」,我們事先需要下載好驅動程序,這里就不選擇聯網搜索驅動。
選擇「從列表或者指定位置安裝」
接著通過「瀏覽」找到下載好的驅動所在的文件夾(這里以Windows XP系統x86晶元為例)。
點擊下一步向導就會開始安裝驅動,經過十幾秒Android驅動即可完成安裝。
驅動安裝完畢後,就可以看到「設備管理器「中Android USB設備的黃色感嘆號已經去掉。
6. 如何將安卓手機連接到電腦 4種方法來將安卓手機連接到電腦
目錄方法1:使用USB電纜連接Windows電腦1、用USB電纜把安卓設備連接到電腦。2、點擊安卓屏幕上的通過USB給這台設備充電3、在「使用USB進行」下選擇文件傳輸4、等待電腦安裝驅動程序。5、打開Windows文件資源管理器。6、在文件資源管理器窗口中點擊此電腦7、雙擊安卓設備。8、瀏覽安卓設備中的文件。9、完成後彈出安卓設備。方法2:使用USB電纜連接macOS1、在網路瀏覽器中訪問 https://www.android.com/filetransfer2、點擊立即下載3、打開下載的安裝程序。4、把Android File Transfer圖標拖到「應用」圖標上。5、用USB電纜把你的安卓設備連接到Mac。6、點擊安卓設備屏幕上的通過USB給這台設備充電7、在「使用USB進行」下選擇文件傳輸8、在Android File Transfer窗口中瀏覽你的文件。9、完成後斷開安卓設備的連接。方法3:使用USB電纜連接Chromebook1、用USB電纜把你的安卓設備連接到Chromebook。2、點擊安卓設備屏幕上的通過USB給這台設備充電3、在「使用USB進行」下選擇文件傳輸4、在「文件」應用程序中瀏覽文件。5、完成後,從Chromebook上斷開安卓設備。方法4:通過AirDroid進行無線連接(所有電腦)1、在安卓設備上安裝AirDroid應用程序。2、創建一個AirDroid帳戶。3、為電腦下載AirDroid應用程序。4、運行AirDroid安裝程序。5、在電腦上(或網路瀏覽器中)打開AirDroid並登錄。6、從電腦把文件發送到安卓設備。7、把文件從安裝設備發送到電腦。這篇文章教你如何把安卓設備連接到PC、Mac或Chromebook。只要有USB電纜,你就能把手機或平板電腦輕松連接到電腦並互傳文件。如果想通過無線方式來連接,那麼只要使用AirDroid就能擺脫線纜的束縛,輕松分享文件。
方法1:使用USB電纜連接Windows電腦
1、用USB電纜把安卓設備連接到電腦。你可以使用給安卓設備充電的同一條線。
2、點擊安卓屏幕上的通過USB給這台設備充電。在把手機或平板電腦連接到電腦後,很快就會彈出這個通知選項。如果安卓設備的屏幕已被鎖定,可能要解鎖後才會看到這個通知。
如果還是沒看到,那就從主屏幕頂部向下滑動,你會在通知欄中看到它。
3、在「使用USB進行」下選擇文件傳輸。這個選項能讓電腦把安卓設備識別為一個硬碟驅動器。這個選項在某些安卓設備上也叫做MTP。
4、等待電腦安裝驅動程序。Windows會自動安裝任何所需的驅動程序,從而讓安卓設備與電腦進行通信。如果驅動程序安裝失敗或者Windows找不到正確的驅動程序,那你就得安裝手機製造商提供的驅動程序了。你可以在網路上搜索設備型號和「Windows驅動」,然後點擊設備製造商的鏈接。不要從未知來源下載驅動程序。
5、打開Windows文件資源管理器。如果沒有自動出現顯示有你的安卓設備內容的窗口,你也可以按Windows鍵+E或者點擊任務欄中的文件資源管理器圖標,隨後就會打開文件資源管理器。
6、在文件資源管理器窗口中點擊此電腦。你會在文件資源管理器的左面板中看到這個選項。點擊後就會在右面板中顯示所有連接的驅動器,其中也包括你的安卓設備。
7、雙擊安卓設備。它可能只會帶有型號標識。它會在「設備和驅動器」或「有可移動存儲的設備」部分中列出。
8、瀏覽安卓設備中的文件。現在你會在右面板中看到安卓設備的文件和文件夾。如果設備裝有SD卡,那麼你通常會看到兩個主要的文件夾——一個是內部存儲(用來直接把文件保存在安卓設備上),而另一個就是你的SD卡。一些常見的子文件夾包括DCIM(用於存儲相機的照片和視頻)、音樂、鈴聲以及特定的應用程序文件夾。
要從安卓設備復制文件到電腦,只用把要復制的文件拖到文件資源管理器的另一個文件夾,或者拖到桌面上就可以了。你也可以用同樣的方法從電腦上拖動文件到安卓設備。
9、完成後彈出安卓設備。一旦在安卓設備上完成了文件移動和訪問,點擊屏幕右下角系統托盤中的安全刪除硬體按鈕(在靠近時鍾的位置)。它看起來像是一個帶勾號的優盤。然後,點擊你的安卓系統名稱旁邊的彈出。這樣,你就能安全地從電腦上拔下安卓設備了。你可能必須展開隱藏的圖標,才能找到安全刪除硬體按鈕。要找到隱藏圖標,點擊任務欄上時鍾附近的向上箭頭。
方法2:使用USB電纜連接macOS
1、在網路瀏覽器中訪問 https://www.android.com/filetransfer in a web browser 。這是Android File Transfer的網站,你要用這個應用程序來把安卓設備連接到你的Mac。
2、點擊立即下載。這樣會把安裝程序下載到你的Mac。
3、打開下載的安裝程序。這個文件名為AndroidFileTransfer.dmg,你會在默認的「下載」文件夾中找到它。
4、把Android File Transfer圖標拖到「應用」圖標上。這樣,Android File Transfer應用就會安裝到你的Mac上。
5、用USB電纜把你的安卓設備連接到Mac。你可以使用給安卓設備充電的同一條線。設備連接後,Android File Transfer就會自動啟動。
6、點擊安卓設備屏幕上的通過USB給這台設備充電。在把手機或平板電腦連接到Mac之後,通知欄中就會彈出這個選項。如果安卓設備的屏幕已被鎖定,可能要解鎖後才會看到這個通知。
如果還是沒看到,那就從主屏幕頂部向下滑動,你會在通知欄中看到它。
7、在「使用USB進行」下選擇文件傳輸。這個選項能讓電腦把安卓設備識別為一個硬碟驅動器。這個選項在某些安卓設備上也叫做MTP。
專家提示
Luigi Oppido
計算機和技術專家Luigi Oppido是美國加州聖克魯斯縣Pleasure Point Computers的所有者和經營者。他擁有超過25年的一般電腦維修、數據恢復、病毒掃除和升級經驗。兩年來,他還一直是加州中部KSCO電台《Computer Man Show!》的主持人。
Luigi Oppido
計算機和技術專家
我們的專家認為:在嘗試通過USB把安卓手機連接到電腦時,最常見的錯誤是會忘記勾選允許把手機用作USB驅動器的方框。
8、在Android File Transfer窗口中瀏覽你的文件。Android File Transfer窗口會顯示你設備上的文件夾,很像一個訪達窗口。如果設備裝有SD卡,那麼你通常會看到兩個主要的文件夾——一個是內部存儲(用來直接把文件保存在安卓設備上),而另一個就是你的SD卡。
相機拍攝的照片和視頻通常會保存在一個名為DCIM的文件夾中。
你可以在安卓設備上傳輸文件。你只用把要傳輸的文件從安卓設備上的文件夾拖到Mac上的文件夾中,反過來也是一樣的。
9、完成後斷開安卓設備的連接。一旦完成了文件傳輸和訪問,只用拔掉電纜,斷開和Mac的連接就行了。確保在拔電纜時沒有任何文件正在進行傳輸。
方法3:使用USB電纜連接Chromebook
1、用USB電纜把你的安卓設備連接到Chromebook。你可以使用給安卓設備充電的同一條線。
2、點擊安卓設備屏幕上的通過USB給這台設備充電。在把手機或平板電腦連接到Chromebook之後,通知欄中就會彈出這個選項。如果安卓設備的屏幕已被鎖定,可能要解鎖後才會看到這個通知。
如果還是沒看到,那就從主屏幕頂部向下滑動,你會在通知欄中看到它。
3、在「使用USB進行」下選擇文件傳輸。這個選項能讓Chromebook把安卓設備識別為一個硬碟驅動器。這樣也會讓Chromebook顯示「文件」應用程序。這個選項在某些安卓設備上也叫做MTP。
4、在「文件」應用程序中瀏覽文件。當你通過USB連接安卓設備時,Chromebook上就會彈出這個窗口。如果設備裝有SD卡,那麼你通常會看到兩個主要的文件夾——一個是內部存儲(用來直接把文件保存在安卓設備上),而另一個就是你的SD卡。
你可以從安卓設備向Chromebook傳輸文件(反過來也一樣)。要把文件從安卓設備復制到Chromebook,只用把文件從安卓設備拖到Chromebook上想要的位置。同樣,你也可以把文件從Chromebook拖到安卓設備上,並且也可以使用「文件」應用程序。
5、完成後,從Chromebook上斷開安卓設備。確保在斷開安卓設備的連接時沒有任何正在傳輸的文件。
方法4:通過AirDroid進行無線連接(所有電腦)
1、在安卓設備上安裝AirDroid應用程序。你可以從Google Play商店免費獲取這個應用程序。你可以通過它連接到電腦上的AirDroid,然後以無線方式傳輸文件。
2、創建一個AirDroid帳戶。這樣能便於你的安卓設備和電腦進行連接。在首次啟動AirDroid時,點擊「注冊」按鈕,然後按照提示創建一個帳戶。
3、為電腦下載AirDroid應用程序。你可以從 https://www.airdroid.com 免費獲取它。只用點擊立即下載按鈕,然後在「用於電腦」下選擇Windows或Mac OS X即可開始下載。如果你使用的Chromebook,或者不想在PC或Mac上安裝軟體,那也可以不用下載,而是直接訪問 http://web.airdroid.com ,訪問AirDroid的Web版本。
4、運行AirDroid安裝程序。如果你用的是網路版,那就跳過這一步。下載完成後,雙擊你從Airdroid下載的文件,然後按照屏幕說明進行安裝。如果是在Windows上安裝AirDroid,在提示時授予通過Windows防火牆的訪問許可權。
5、在電腦上(或網路瀏覽器中)打開AirDroid並登錄。你要使用在安卓設備上登錄應用程序時創建的同一個Airdroid帳戶。然後,你就可以通過電腦上的Airdroid瀏覽安卓設備上的文件了。
6、從電腦把文件發送到安卓設備。你可以把文件拖放到AirDroid窗口中,從而快速添加文件到安卓設備。點擊像紙飛機的「傳輸文件」圖標,然後從列表中選擇你的安卓設備。 然後,您可以把文件從計算機拖到聊天窗口,然後點擊發送把它們保存到安卓設備上。
7、把文件從安裝設備發送到電腦。為此,你要在安卓設備上打開AirDroid應用程序,點擊頂部的我的設備,然後從列表中選擇電腦(或者選擇AirDroid 網路版)。點擊底部的回形針圖標,選擇文件,選擇要發送的文件,然後點擊發送。
7. PC伺服器端和android手機客戶端socket通信問題
1. PC伺服器啟用ServerSocket
兩個通信實體在建立虛擬鏈路之前,需要有一方先准備好,主動接受來自其他通信實體的連接請求。
使用ServerSocket對象監聽來自客戶端的Socket連接。
//創建ServerSocket對象
ServerSocket ss = new ServerSocket(30000);
//監聽來自客戶端的請求
while(true){
Socket s = ss.accept();
…
}
如果沒有連接,則將一直處於等待狀態。當接收到連接請求後,獲取消息到輸入流,並保存到文件。
//接收客戶端消息
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信息並發送給伺服器端,然後將結果保存。
WifiManager wifiManager=(WifiManager) getSystemService(WIFI_SERVICE);
wifiManager.startScan();
mWifiList = wifiManager.getScanResults();
由WifiManager說明可知,它可以用於處理已配置的網路,當前連接的網路及AP信息的掃描等情況。
向伺服器發送消息:
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
8. 怎麼把pc端的軟體作為伺服器與android客戶端通信
Android使用的僅僅使用了PC 里邊的一個埠 IP自然就是127.0.0.1了,或者是localhost吧 關於5037口和5555口,找到了一個看起來合理的解釋: adb(Android Debug Bridge)包括三個部分: 1)adb client, 運行在PC上(為DDMS,即IDE工作) 2)adb daemon(守護進程), 運行於Emulator(為與Emulator中的VM交互工作); 3)adb server(服務進程), 運行在PC(任務管理器上有),管理著adb client和adb daemon的通信.server與client通信的埠是是5037, adb server會與emulator交互的,使用的埠有兩個,一個是5554專門用於與Emulator實例的連接,那麼數據可以從Emulator轉發給IDE控制台了,另一個則是5555,專門與adb daemon連接為後面調試使用。