Как я могу использовать Bonjour на iOS, чтобы другие устройства, подключенные к моей точке доступа iPhone, знали IP-адрес и порт сервера, на котором размещено мое приложение iOS? - PullRequest
0 голосов
/ 11 ноября 2019

Я создал приложение для iOS, на котором размещен UDP-сервер. Мне кажется невозможным заранее узнать IP-адрес сервера. Я использую эту функцию, чтобы получить IP-адрес:

// Получить IP-адреса

void getIPAddresses(std::map<std::string, std::string>& addresses) {
    struct ifaddrs *interfaces = NULL;
    struct ifaddrs *temp_addr = NULL;
    // Retrieve the current interfaces - returns 0 on success
    int success = getifaddrs(&interfaces);
    if (success == 0) {
        // Loop through linked list of interfaces
        temp_addr = interfaces;
        while (temp_addr != NULL) {
            if (temp_addr->ifa_addr->sa_family == AF_INET) {
                // Check if interface is en0 which is the wifi connection on the iPhone
                addresses[temp_addr->ifa_name] = inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr);
            }
            temp_addr = temp_addr->ifa_next;
        }
    }
    // Free memory
    freeifaddrs(interfaces);
}

Как видно, эта функция возвращает количество IP-адресов и без проб и ошибок она не 'Кажется невозможным определить, по какому IP-адресу сервер на самом деле принимает пакеты UDP.

Есть ли какой-нибудь способ, которым я могу сделать это лучше, используя Bonjour? Устройства, которые подключаются к моему серверу UDP, могут это делать, потому что мой iPhone действует как точка доступа Wi-Fi (я заранее сообщаю SSID и пароль устройствам).

РЕДАКТИРОВАТЬ:

Кажется, чтовсякий раз, когда я создаю Wifi Hotpspot, сервер UDP доступен через интерфейс под названием «Bridge100». Так что я знаю, что такое IP-адрес. Как я могу использовать Bonjour, чтобы другие устройства, подключенные к моей айфонской точке доступа Wi-Fi, могли знать IP-адрес моего сервера udp?

...