【发布时间】:2019-01-11 02:00:05
【问题描述】:
我相信有人可以在几秒钟内解决这个问题,但我对 swift 非常陌生,在 iPad 上使用 Playground。我正在尝试修改一些 SendUDP 代码以改为接收,但我无法解决 readResult= 行上的编译错误(unsafepointer is not convertible to unsaferawbufferpointer)。 SEND 可以使用非常相似的代码正常工作,但我在这里真的很挣扎,超出了我的深度......
这是代码
func readUDP() {
guard
let addresses =
try ? addressesFor(host: "192.168.4.1", port: 80)
else {
print("host not found")
return
}
if addresses.count != 1 {
print("host ambiguous; using the first one")
}
address = addresses[0]
fd1 = socket(Int32(address.ss_family), SOCK_DGRAM, 0)
guard fd1 >= 0
else {
print("`socket` failed`")
return
}
defer {
let junk = close(fd1)
assert(junk == 0)
}
var message = [UInt8](repeating: 0, count: 1024)
let messageCount = message.count
var readResult = message.withUnsafeBytes {
(messagePtr: UnsafePointer < UInt8 > ) - > Int in
return address.withSockAddr {
(sa, saLen) - > Int in
return recvfrom(fd1, messagePtr, messageCount, 0, sa, & saLen)
}
}
guard readResult >= 0
else {
print("read failed")
return
}
print("success")
}
【问题讨论】:
标签: swift compiler-errors udp