Я получаю данные из давно работающего TCP-соединения, используя новую сетевую среду в MacOS. Я использую NWConnection.receive, а не NWConnection.receiveMessage (который, я полагаю, ожидает завершения сокета TCP, а затем доставляет все данные сразу).
В настоящее время я запрашиваю от 1 до 8192 байтов данных. Затем я анализирую это. Затем я снова звоню и получаю следующую порцию данных. Похоже, мне не хватает некоторых данных. Я думаю, что когда я получаю 8192 байта данных, если в этот момент в очереди их больше, лишние отбрасываются.
Вот мой код для приема звонка:
connection.receive(minimumIncompleteLength: 1, maximumLength: 8192) { (content, context, isComplete, error) in
if let content = content {
self.delegate.gotData(data: content, from: self.hostname, port: self.port)
}
}
После того, как я проанализирую 8192 байта данных, я снова вызову функцию приема выше, чтобы получить следующий пакет данных.
Если установить максимальную длину достаточно большой, у меня нет пропущенных данных.