Я работаю с пользовательским сетевым протоколом, который требует точной последовательности байтов для выполнения своего рода рукопожатия, как, например, первый вызов должен отправить тело вроде:
0003joy
, переведенное в[UInt8]
должно быть [0x00,0x00,0x00,0x03,0x6a,0x6f,0x79]
(обратите внимание, что первые 4 числа не должны быть преобразованы в символы ... Я отправляю числовое значение в соответствии с запросом протокола)
Я пытаюсь отправитьэта последовательность до outputstream
, но мне интересно, если шаги, которые я выполняю, правильные, вот мой код ... Вы видите что-нибудь странное, что может помешать этой последовательности добраться до сервера?
// Create Bytes sequence
let bytes:[UInt8] = [0x00,0x00,0x00,0x03,0x6a,0x6f,0x79]
// Convert Bytes array do Data
let dt = Data(bytes)
// Send Data to stream
_ = dt.withUnsafeBytes {
guard let pointer = $0.baseAddress?.assumingMemoryBound(to: UInt8.self) else {
return
}
outputStream.write(pointer, maxLength: dt.count)
}
Кроме того, нужно ли преобразовывать последовательность байтов в данные? Есть ли способ отправить последовательность байтов непосредственно в сокет без преобразования его в данные?