Добрый день -Как получить IP-адрес, чтобы однозначно идентифицировать каждого клиента, подключенного к сети - PullRequest
0 голосов
/ 24 февраля 2020

Я не очень разбираюсь в сетях, но я запускаю свой собственный сервис 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. Что я могу использовать для уникальной идентификации каждого устройства?

...