Отбрасывает ли NWConnection.receive данные TCP, превышающие максимальную длину в момент выполнения закрытия? - PullRequest
0 голосов
/ 07 марта 2019

Я получаю данные из давно работающего 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 байта данных, я снова вызову функцию приема выше, чтобы получить следующий пакет данных.

Если установить максимальную длину достаточно большой, у меня нет пропущенных данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...