बस तेजी से 3स्विफ्ट 3 NetService आईपी को कैसे हल करें?
यहाँ में Bonjour कोशिश कर मेरी कोड है, मैं
func netServiceDidResolveAddress(_ sender: NetService) {
print("netServiceDidResolveAddress service name \(sender.name) of type \(sender.type)," +
"port \(sender.port), addresses \(sender.addresses)")
}
और यहाँ मेरी परिणाम है
netServiceDidResolveAddress सेवा का नाम वेबर की मैक के प्रकार _myapp मिनी प्रतिनिधि प्राप्त कर सकते हैं ._tcp।, पोर्ट 5678, वैकल्पिक वैकल्पिक ([< 1002162e c0a80205 00000000 00000000>, < 1c1e162e 00000000 fe800000 00000000 00bce7ad 24b4b7e8 08000000>])
c0a80205 आईपी मैं => 192.168.2.5
की तलाश में और पता है [डेटा], एप्पल का कहना है
सेवा के पते है। यह एनएसडीएटा उदाहरणों का एक एनएसएआरआरई है, जिनमें से प्रत्येक में एक ही संरचना सॉकड्रर है जो कनेक्ट (2) के साथ उपयोग के लिए उपयुक्त है। यदि सेवा के लिए कोई पता हल नहीं किया गया है या सेवा अभी तक हल नहीं हुई है, तो एक खाली NSArray लौटाया गया है।
मैं अभी भी उलझन में हूं कि डेटा क्यों उपयोग नहीं कर सकता .btyes? जैसा कि ऐप्पल कहता है "यह एनएसडीएटा उदाहरणों का एनएसएआरआरई है" लेकिन मैं इसका उपयोग एनएसडीटा
और पठनीय आईपी स्ट्रिंग के रूप में पते को कैसे हल करें?
मैं इस से पहले की कोशिश, लेकिन सिवाय मैं के रूप में परिणाम प्राप्त नहीं है ...
let thedata = NSData(bytes: sender.addresses, length: (sender.addresses?.count)!)
var storage = sockaddr_storage()
thedata.getBytes(&storage, length: sizeof(sockaddr_storage))
if Int32(storage.ss_family) == AF_INET {
let addr4 = withUnsafePointer(&storage) {UnsafePointer<sockaddr_in>($0).pointee }
print(inet_ntoa(addr4.sin_addr));
}
कोई भी सुझाव सहायता हो जाएगा, धन्यवाद