Я использую NetService для подключения к iostreams одного устройства ios к другому, и я использую потоки для отправки / получения данных между двумя устройствами ios.Но передача данных иногда внезапно останавливается без каких-либо ошибок, и через несколько минут выдает ошибку «Тайм-аут операции. Разъем не подключен».Такое случается редко, но бывает, и я оглянулся, но не нашел решения, связанного с этим.
Вот код метода записи.
extension OutputStream {
func write(data: Data) -> Int {
var bytesRemaining = data.count
var totalBytesWritten = 0
var bytesWritten = 0
while bytesRemaining > 0 {
bytesWritten = data.withUnsafeBytes {
self.write(
$0.advanced(by: totalBytesWritten),
maxLength: bytesRemaining
)
}
if bytesWritten < 0 {
return -1
} else if bytesWritten == 0 {
return totalBytesWritten
}
bytesRemaining -= bytesWritten
totalBytesWritten += bytesWritten
}
return totalBytesWritten
}//end method
}//end extension
Вот коддля метода чтения.
func readDataFrom2(_ aStreamP: Stream) {
var buffer = [UInt8](repeating: 0, count: bufferSize)
if aStreamP == self.connectedInputStream, let inputStream = self.connectedInputStream {
while (inputStream.hasBytesAvailable){
let len = inputStream.read(&buffer, maxLength: buffer.count)
if(len > 0) {
let streamedData = Data.init(bytes: buffer, count: len)
self.readData += streamedData
}//end if len > 0
}//end whileLoop
}//end if inputStream
}//end method
self.readData - это свойство данных класса, в котором у меня есть этот метод чтения.