?
Dokumen ini menggunakan Manual laman web PHP Cina Lepaskan
BluetoothServerSocket
版本:Android 2.3 r1
?
結(jié)構(gòu)
繼承關(guān)系
public final class BluetoothServerSocket extends Object implements Closeable
????????
java.lang.Object
android.bluetooth.BluetoothServerSocket
?
類概述
???????? 一個(gè)藍(lán)牙監(jiān)聽端口。
???????? 藍(lán)牙端口監(jiān)聽接口和TCP端口類似:Socket和ServerSocket類。在服務(wù)器端,使用BluetoothServerSocket類來(lái)創(chuàng)建一個(gè) 監(jiān)聽服務(wù)端口。當(dāng)一個(gè)連接被BluetoothServerSocket所接受,它會(huì)返回一個(gè)新的BluetoothSocket來(lái)管理該連接。在客戶 端,使用一個(gè)單獨(dú)的BluetoothSocket類去初始化一個(gè)外接連接和管理該連接。
???????? 最通常使用的藍(lán)牙端口是RFCOMM,它是被Android API支持的類型。RFCOMM是一個(gè)面向連接,通過藍(lán)牙模塊進(jìn)行的數(shù)據(jù)流傳輸方式,它也被稱為串行端口規(guī)范(Serial Port Profile,SPP)。
???????? 為了創(chuàng)建一個(gè)對(duì)準(zhǔn)備好的新來(lái)的連接去進(jìn)行監(jiān)聽BluetoothServerSocket
類,使用 BluetoothAdapter.listenUsingRfcommWithServiceRecord()
方法。然后調(diào)用accept()
方法去監(jiān) 聽該鏈接的請(qǐng)求。在連接建立之前,該調(diào)用會(huì)被阻斷,也就是說(shuō),它將返回一個(gè)BluetoothSocket
類去管理該連接。每次獲得該類之后,如果不再需 要接受連接,最好調(diào)用在BluetoothServerSocket
類下的close()
方法。關(guān)閉BluetoothServerSocket
類不會(huì)關(guān) 閉這個(gè)已經(jīng)返回的BluetoothSocket
類。
???????? BluetoothSocket
類線程安全。特別的,close()
方法總會(huì)馬上放棄外界操作并關(guān)閉服務(wù)器端口。
???????? 注意:需要BLUETOOTH
權(quán)限。
???????? 參見
?????????????????? BluetoothSocket
?
公共方法
public BluetoothSocket accept (int timeout)
???????? 阻塞直到超時(shí)時(shí)間內(nèi)的連接建立。
???????? 在一個(gè)成功建立的連接上返回一個(gè)已連接的BluetoothSocket類。
???????? 每當(dāng)該調(diào)用返回的時(shí)候,它可以在此調(diào)用去接收以后新來(lái)的連接。
???????? close()
方法可以用來(lái)放棄從另一線程來(lái)的調(diào)用。
?????????????????? 參數(shù)
?????????????????? ???????? timeout??? (譯者注:阻塞超時(shí)時(shí)間)
?????????????????? 返回值
??????????????????????????? 已連接的 BluetoothSocket
?????????????????? 異常
??????????????????????????? IOException???? 出現(xiàn)錯(cuò)誤,比如該調(diào)用被放棄,或者超時(shí)。
?
public BluetoothSocket accept ()
???????? 阻塞直到一個(gè)連接已經(jīng)建立。(譯者注:默認(rèn)超時(shí)時(shí)間設(shè)置為-1,見源碼)
???????? 在一個(gè)成功建立的連接上返回一個(gè)已連接的BluetoothSocket類。
???????? 每當(dāng)該調(diào)用返回的時(shí)候,它可以在此調(diào)用去接收以后新來(lái)的連接。
???????? close()
方法可以用來(lái)放棄從另一線程來(lái)的調(diào)用。
?????????????????? 返回值
??????????????????????????? 已連接的 BluetoothSocket
?????????????????? 異常
??????????????????????????? IOException???? 出現(xiàn)錯(cuò)誤,比如該調(diào)用被放棄,或者超時(shí)。
?
???????? public void close ()
馬上關(guān)閉端口,并釋放所有相關(guān)的資源。
在其他線程的該端口中引起阻塞,從而使系統(tǒng)馬上拋出一個(gè)IO異常。
關(guān)閉BluetoothServerSocket不會(huì)關(guān)閉接受自accept()的任意BluetoothSocket。
異常
IOException