Сега се сблъсква с някои предизвикателства, използвайки CoreBlueTooth
L2CAP channel
. За да разберете по-добре как работят нещата. Взех L2CapDemo (главен) (https://github.com/paulw11/L2CapDemo) от GitHub и се опита да експериментира с него. Ето какво направих, заедно с един въпрос.
Заменихме функцията sendTextTapped с тази:
@IBAction func sendTextTapped(_ sender: UIButton) {
guard let ostream = self.channel?.outputStream else {
return
}
var lngStr = "1234567890"
for _ in 1...10 {lngStr = lngStr + lngStr}
let data = lngStr.data(using: .utf8)!
let bytesWritten = data.withUnsafeBytes { ostream.write($0, maxLength: data.count) }
print("bytesWritten = \(bytesWritten)")
print("WR = \(bytesWritten) / \(data.count)")
}
И резултатът от изпълнението е:
bytesWritten = 8192
WR = 8192 / 10240
Това ми позволява да видя какво се случва в случай, когато bytesWritten ‹ data.count. С други думи, всички байтове не могат да бъдат изпратени в една част.
Сега идва въпросът. Проблемът е, че не виждам нищо, останалите байтове изглежда просто се игнорират. Искам да знам какво да правя, ако не искам да игнорирам тези байтове. Какъв е начинът да се грижим за останалите байтове? Ще има случаи, в които ще трябва да прехвърлим десетки хиляди или дори стотици хиляди байтове.