Я не очень разбираюсь в сетях, но я запускаю свой собственный сервис Bonjour, чтобы найти ближайших пользователей. Я прочитал это сообщение в блоге и там написано:
Сокет представляет собой уникальную конечную точку связи в сети. Когда вашему приложению требуется обмен данными с другим приложением, оно создает сокет и использует его для подключения к сокету другого приложения. Вы можете отправлять и получать данные через один и тот же сокет. С каждым сокетом связан IP-адрес и номер порта (от 1 до 65535). IP-адрес уникально идентифицирует каждый компьютер в данной сети , а номер порта уникально идентифицирует сетевой сокет на этом компьютере.
NetServiceBrowser
имеет метод делегата, который обнаруживает соседних пользователей:
func netServiceBrowser(_ browser: NetServiceBrowser, didFind service: NetService, moreComing: Bool) {
print(service.domain)
print(service.name)
print(service.type)
print(service.addresses as Any)
print(service.hostName as Any)
print(service.port)
}
У него также есть метод, который мне нужно использовать, чтобы позволить им фактически соединяться друг с другом:
func netService(_ sender: NetService,
didAcceptConnectionWith inputStream: InputStream,
outputStream stream: OutputStream) {
print("netServiceDidAcceptConnection:\(sender)");
}
Как только пользователи соединяются друг с другом и начинают обмениваться данными, которые мне нужны создать массив с чем-то, что уникально идентифицирует каждого из них. Я хотел бы использовать device's IP Address
, но не вижу ни одного, возвращенного из метода делегата didFind
. Что я могу использовать для уникальной идентификации каждого устройства?