6
iOS 응용 프로그램에서 Bonjour 서비스를 만들려고하지만 게시 할 수 없습니다. netServiceWillPublish
대리자 메서드 만 호출되며 dns-sd를 사용하여 서비스가 표시되지 않습니다. 내가 잘못 여기서 뭐하는거야iOS에서 Bonjour 문제가 발생했습니다.
var service: NetService? = nil
func start() {
createSockets()
service = NetService(domain: "test", type: "_test._tcp.", name: "Test", port: Int32(port))
service?.delegate = self
service?.startMonitoring()
service?.publish()
service?.setTXTRecord(NetService.data(fromTXTRecord: [
"model": "AppleTV3,2,1".data(using: .utf8)!,
"srcvers": "160.10".data(using: .utf8)!,
"features": "0x100009FF".data(using: .utf8)!,
"deviceId": "b8:53:ac:43:f3:15".data(using: .utf8)!,
"pw": "0".data(using: .utf8)!,
"rmodel": "MacBookPro10,2".data(using: .utf8)!
]))
}
private func createSockets() {
ipv4Socket = CFSocketCreate(kCFAllocatorDefault, PF_INET, SOCK_STREAM, IPPROTO_TCP, kCFSocketAutomaticallyReenableAcceptCallBack, socketCallback, nil)
var sin = sockaddr_in()
memset(&sin, 0, MemoryLayout<sockaddr_in>.size)
sin.sin_len = __uint8_t(MemoryLayout<sockaddr_in>.size)
sin.sin_family = sa_family_t(AF_INET); /* Address family */
sin.sin_port = in_port_t(port) /* Or a specific port */
sin.sin_addr.s_addr = INADDR_ANY
let sincfd = withUnsafePointer(to: &sin) {
$0.withMemoryRebound(to: UInt8.self, capacity: MemoryLayout<sockaddr_in>.size) {
return CFDataCreate(kCFAllocatorDefault, $0, MemoryLayout<sockaddr_in>.size)
}
}
CFSocketSetAddress(ipv4Socket, sincfd)
let socketsource = CFSocketCreateRunLoopSource(
kCFAllocatorDefault,
ipv4Socket,
0);
CFRunLoopAddSource(
CFRunLoopGetCurrent(),
socketsource,
CFRunLoopMode.defaultMode);
}
나는 아이폰 OS 네트워킹 이러한 유형의 새로운 해요 :
여기 내 코드입니까?
어쩌면 당신은 당신의 Netservice를의 참조를 유지하는 시도 할 수 있습니다? 어쩌면 할당이 취소되었을 수도 있습니다. – koropok
NetService에는 작동하지 않는 코드의 클래스 수준에서 참조가 있습니다. 나는 독점적 인 이래로 우리가하고있는 일을 발췌하기 위해 게시물에서 그것을 바 꾸었습니다. 코드 스 니펫을 업데이트하여 반영하도록하겠습니다. 감사. – Jake
bonjour 연결에 obj-c 타사를 사용하고 있는데 제대로 작동합니다. 도움이 될지 확실하지 않습니다. https://github.com/jdiehl/async-network – koropok