這兩天想實現pc和安卓手機的通訊,限於水平,知道的方法大概有兩種:基於資料報的socket和藍芽。雖然看起來簡單,但調也調了兩天多。自己測試了下socket,在室內wifi環境下時延大概是0.1s。而在3g網路下時延居然達3s之多,而且只要不發資料,埠貌似就會斷掉,總之,很不爽。於是,便考慮了藍芽的方法。
實現手機和pc的藍芽通訊,一種是最常用的藍芽虛擬串列埠,這種方法可以通過配置非常簡單地實現,很多外接藍芽gps都用這種做法。但大名鼎鼎的安卓卻不支援,因此對大部分外接gps都不提供支援(可能安卓手機大部分包含內建gps,覺得外接的太雞肋了)。因此必須採用第二種,藍芽socket。
在電腦上,實在不想去在c++下開發,於是便尋找.net元件,但實際上微軟的net庫中不支援藍芽,因此必須採用第三方的控制項,名字叫inthehand.
這篇文章中詳細的介紹了inthehan
d元件,由於它討論了實現檔案傳輸的思路,我們在這篇文章中就只討論簡單的字元傳輸。
它的官方**是inthehand.net,其中多數的類庫和方法都能找到。
下面是手機端的初始化**。其中的具體含義可參照
private printstream mprintstream = null;
private bufferedreader mbufferedreader = null;
bluetoothadapter mybluetoothadapter = null;
bluetoothserversocket mbthserver = null;
bluetoothsocket mbthsocket = null;
mybluetoothadapter = bluetoothadapter.getdefaultadapter();
mybluetoothadapter.enable();//open bth
intent discoverableintent = new intent(
bluetoothadapter.action_request_discoverable);//使得藍芽處於可發現模式,持續時間150s
discoverableintent.putextra(
bluetoothadapter.extra_discoverable_duration, 150);
/// /// 開啟埠
///
/// 埠名稱
/// 成功否
public bool openport(string name)
bluetoothdeviceinfo bd = new bluetoothdeviceinfo(devices[0].deviceaddress);
bluetoothclient = new bluetoothclient();
guid mguid = guid.parse("fa87c0d0-afac-11de-8a39-0800200c9a66");
bluetoothclient.connect(devices[0].deviceaddress, mguid);//客戶端對位址實現連線,這是乙個阻塞執行緒,需要伺服器端的回應
receivethread = new thread(receivemethod);
receivethread.start();
return true;
}
下面是手機接受pc端連線請求的方法:
if (connected)
trycatch (ioexception e)
trycatch (ioexception e)
trycatch (ioexception e1)
// 取得輸入、輸出流
trycatch (ioexception e)
要通過手機傳送資料,執行以下**即可:
mprintstream.write(buff);
} catch (ioexception e)
// 傳送給伺服器
mprintstream.flush();
pc端的接受**:
while (isconnecting)
catch (exception ex)
inthehand.net.personal是pc端上一定要用得到的庫,但注意這個庫函式的版本,我一開始用了的dll是600k左右的,編譯沒問題,執行就會報錯,提示找不到dll。但後來左思右想,才發現還有另外的乙個同名dll,150k左右,換過來以後一切ok,太坑爹了!
手機裝置的藍芽硬體許可權要開啟,否則就沒法執行。
還有我特想將手機做個藍芽hid裝置,但這樣貌似是不行的。因為這個庫本身提供的方法不夠底層...總之還想再研究下。
有任何問題歡迎討論
PC到PC的IP電話實現
文章摘要 pc到pc的ip 實現 基於實驗和研究的目的,本文實現了乙個從計算機到計算機的ip 的軟體。軟體的開發環境為windows 98平台,開發工具採用visual c 5.0。本軟體能夠在網路上實現多人之間的文字傳輸和兩人之間的語音對話。下文將對本軟體展開分析。一 軟體設計 實現此軟體的重點和...
PC到PC的IP電話實現
文章摘要 pc到pc的ip 實現 基於實驗和研究的目的,本文實現了乙個從計算機到計算機的ip 的軟體。軟體的開發環境為windows 98平台,開發工具採用visual c 5.0。本軟體能夠在網路上實現多人之間的文字傳輸和兩人之間的語音對話。下文將對本軟體展開分析。一 軟體設計 實現此軟體的重點和...
PC到PC的IP電話實現
文章摘要 pc到pc的ip 實現 基於實驗和研究的目的,本文實現了乙個從計算機到計算機的ip 的軟體。軟體的開發環境為windows 98平台,開發工具採用visual c 5.0。本軟體能夠在網路上實現多人之間的文字傳輸和兩人之間的語音對話。下文將對本軟體展開分析。一 軟體設計 實現此軟體的重點和...