我试图在流中传递一个结构,以便它随后通过套接字发送到另一个设备。代码有效,但发送了错误的数据。每次发送随机数据时,我都做错了。我哪里错了?这是我的代码:
public struct PStypes {
var u: UInt32 //< [X_XXXXXX V]
var i: UInt32 //< [X_XXXXXX A]
}
func sendMessage(message: String) {
var task = PStypes(u: 7, i: 9)
var bufferData = NSData(bytes: &task, length: 8)
var data:Data = bufferData as Data
var bufferDataSize = data.count
let bytesWritten = withUnsafePointer(to: &data) {
$0.withMemoryRebound(to: UInt8.self, capacity: bufferDataSize) {
outputStream.write($0, maxLength: bufferDataSize)
}
}
}
最佳答案
问题在于这段代码:
let bytesWritten = withUnsafePointer(to: &data) {
$0.withMemoryRebound(to: UInt8.self, capacity: bufferDataSize) {
outputStream.write($0, maxLength: bufferDataSize)
}
}
这最终会为您提供指向 Data
数据结构本身的指针,而不是它所保存的数据。您可以使用以下方法解决此问题:
let bytesWritten = data.withUnsafeBytes {
outputStream.write($0, maxLength: 8)
}
这也稍微简化了代码!
关于ios - 在 Swift 3 中将结构写入 outputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45584480/