前言
本章內容是 android.bluetooth.BluetoothServerSocket,為Android藍芽部分的章節翻譯。伺服器通訊通訊端,與TCP ServerSocket類似。版本為 Android 2.3 r1,翻譯來自中山大學的"Android Club SYSU",歡迎訪問他們的WIKI:http://www.android-wiki.net,再次感謝"Android Club SYSU"!期待你一起參與Android API 的中文翻譯,聯絡我 over140@gmail.com。
聲明
歡迎轉載,但請保留文章原始出處:)
Android Club SYSU:http://www.android-wiki.net
部落格園:http://www.cnblogs.com/
Android中文翻譯組:http://code.taobao.org/project/view/404/
本文
一、結構
public final class BluetoothServerSocket extends Object implements Closeable
java.lang.Object
android.bluetooth.BluetoothServerSocket
二、概述
一個藍芽監聽連接埠。
藍芽連接埠監聽介面和TCP連接埠類似:Socket和ServerSocket類。在伺服器端,使用BluetoothServerSocket類來建立一個 監聽服務連接埠。當一個串連被BluetoothServerSocket所接受,它會返回一個新的BluetoothSocket來管理該串連。在客戶 端,使用一個單獨的BluetoothSocket類去初始化一個外接串連和管理該串連。
最通常使用的藍芽連接埠是RFCOMM,它是被Android API支援的類型。RFCOMM是一個連線導向,通過藍芽模組進行的資料流傳輸方式,它也被稱為序列埠規範(Serial Port Profile,SPP)。
為了建立一個對準備好的新來的串連去進行監聽BluetoothServerSocket
類,使用 BluetoothAdapter.listenUsingRfcommWithServiceRecord()
方法。然後調用accept()
方法去監 聽該連結的請求。在串連建立之前,該調用會被阻斷,也就是說,它將返回一個BluetoothSocket
類去管理該串連。每次獲得該類之後,如果不再需 要接受串連,最好調用在BluetoothServerSocket
類下的close()
方法。關閉BluetoothServerSocket
類不會關 閉這個已經返回的BluetoothSocket
類。
BluetoothSocket
類安全執行緒。特別的,close()
方法總會馬上放棄外界操作並關閉伺服器連接埠。
注意:需要BLUETOOTH
許可權。
參見
BluetoothSocket
三、公用方法
public BluetoothSocketaccept (int timeout)
阻塞直到逾時時間內的串連建立。
在一個成功建立的串連上返回一個已串連的BluetoothSocket類。
每當該調用返回的時候,它可以在此調用去接收以後新來的串連。
close()
方法可以用來放棄從另一線程來的調用。
參數
timeout (譯者註:阻塞逾時時間)
傳回值
已串連的 BluetoothSocket
異常
IOException 出現錯誤,比如該調用被放棄,或者逾時。
public BluetoothSocket accept ()
阻塞直到一個串連已經建立。(譯者註:預設逾時時間設定為-1,見源碼)
在一個成功建立的串連上返回一個已串連的BluetoothSocket類。
每當該調用返回的時候,它可以在此調用去接收以後新來的串連。
close()
方法可以用來放棄從另一線程來的調用。
傳回值
已串連的 BluetoothSocket
異常
IOException 出現錯誤,比如該調用被放棄,或者逾時。
public void close ()
馬上關閉連接埠,並釋放所有相關的資源。
在其他線程的該連接埠中引起阻塞,從而使系統馬上拋出一個IO異常。
關閉BluetoothServerSocket不會關閉接受自accept()的任意BluetoothSocket。
異常
IOException