Как, используя C или CLI (linux), рекламировать услугу Wi-Fi P2P (локальный URI и карта услуг)? - PullRequest
0 голосов
/ 13 апреля 2020

Я написал приложения Java и Xamarin, которые рекламируют и обнаруживают P2P-сервисы Wi-Fi, однако теперь я хочу рекламировать те же сервисы из linux дистрибутива без Android.

* 1002. * Я нашел различные linux модули ядра, которые могли бы иметь такую ​​же возможность, и в частности wpa_supplicant.

Моя цель - иметь возможность рекламировать ту же услугу, что и один из мои Android приложения рекламируют, но вместо этого делают это из C (идеально) или linux CLI (в конечном счете, я хочу написать собственный модуль ядра Linux, который выполняет ту же цель, что и моя отправка Android приложение).

Есть ли у кого-нибудь какие-либо рекомендации?

Два аспекта данных, которые выполняет приложение Android, - это определение локального домена (например, _test._presence._tcp) и служебного словаря, Например:

1:Some text
2:More Text
3:Text Map in Android does not exceed 90 characters 

Только для контекста, это выдержка из API Android, которая показывает, как служба зарегистрирована в Java, но фактическая реклама осуществляется базовой системой.

Бо регистрация локального домена и карты услуг очевидна:

    private void startRegistration() {
        //  Create a string map containing information about your service.
        Map record = new HashMap();
        record.put("listenport", String.valueOf(SERVER_PORT));
        record.put("buddyname", "John Doe" + (int) (Math.random() * 1000));
        record.put("available", "visible");

        // Service information.  Pass it an instance name, service type
        // _protocol._transportlayer , and the map containing
        // information other devices will want once they connect to this one.
        WifiP2pDnsSdServiceInfo serviceInfo =
                WifiP2pDnsSdServiceInfo.newInstance("_test", "_presence._tcp", record);

        // Add the local service, sending the service info, network channel,
        // and listener that will be used to indicate success or failure of
        // the request.
        manager.addLocalService(channel, serviceInfo, new ActionListener() {
            @Override
            public void onSuccess() {
                // Command successful! Code isn't necessarily needed here,
                // Unless you want to update the UI or add logging statements.
            }

            @Override
            public void onFailure(int arg0) {
                // Command failed.  Check for P2P_UNSUPPORTED, ERROR, or BUSY
            }
        });
    }

Вышеприведенная выдержка из https://developer.android.com/training/connect-devices-wirelessly/nsd-wifi-direct

...