Swift3 Swift 3-将c结构sockaddr_in转换为CFData

Swift3 Swift 3-将c结构sockaddr_in转换为CFData,swift3,unsafe-pointers,Swift3,Unsafe Pointers,我需要你的帮助,这段代码在Swift 3中不再编译了 //: Let's set up the `sockaddr_in` C structure using the initializer. var sin = sockaddr_in( sin_len: UInt8(sizeof(sockaddr_in)), sin_family: sa_family_t(AF_INET), sin_port: in_port_t(0), sin_addr: in_addr(s

我需要你的帮助,这段代码在Swift 3中不再编译了

//: Let's set up the `sockaddr_in` C structure using the initializer.
var sin = sockaddr_in(
    sin_len: UInt8(sizeof(sockaddr_in)),
    sin_family: sa_family_t(AF_INET),
    sin_port: in_port_t(0),
    sin_addr: in_addr(s_addr: inet_addr(routerIP)),
    sin_zero: (0,0,0,0,0,0,0,0)
)

//: Now convert the structure into a `CFData` object.
let data = withUnsafePointer(&sin) { ptr in
    CFDataCreate(kCFAllocatorDefault, UnsafePointer(ptr), sizeof(sockaddr_in))
}

//: Create the `CFHostRef` with the `CFData` object and store the retained value for later use.
host = CFHostCreateWithAddress(kCFAllocatorDefault, data).takeRetainedValue()
我必须修正“withUnsafePointer”这行,但我不知道怎么做

我试过这样的东西

    let data = withUnsafePointer(to: &sin) { ptr in
        CFDataCreate(kCFAllocatorDefault, UnsafePointer(ptr), MemoryLayout<sockaddr_in>.size)
    }
let data=withUnsafePointer(to:&sin){ptr in
CFDataCreate(kCFAllocatorDefault、UnsafePointer(ptr)、MemoryLayout.size)
}
编译器说我必须使用withMemoryRebound,但如何使用?
感谢

NSData
提供了一种方便的方法来帮助您完成此任务,然后您可以利用免费桥接将其传送到
CFData

let data = NSData(bytes: &sin, length: MemoryLayout<sockaddr_in>.size) as CFData
let data=NSData(字节:&sin,长度:MemoryLayout.size)作为CFData

谢谢Jenny,现在可以编译了,但是我有一个新错误,我在这里发布了我的新错误,