Установление Socket-соединения между Android и приложением UWP через WiFiDirect - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь установить sh соединение сокета между Android и UWP приложением через WiFiDirect . Приложение UWP рекламирует себя, позволяя другим обнаружить его. Приложение Android ищет доступное устройство WiFiDirect и подключается к приложению UWP.

Я успешно инициализировал и подключился через WiFiDirect между Android и UWP. Но я запутался в создании подключения Socket после подключения WiFiDirect. В частности, я сомневаюсь, на какой стороне я должен создавать ServerSocket и client-socket.

На стороне Android я видел пример создания ServerSocket, если устройство group-owner и наоборот . Но на стороне UWP я не уверен, какой из них мне следует создать.

Android боковой код для создания сокета: -

override fun onConnectionInfoAvailable(info: WifiP2pInfo?) {
    if (info!!.groupFormed && info.isGroupOwner) {
        // Creating ServerSocket
    }
    else if (info.groupFormed) {
        // Creating Client Socket
    }
}

На стороне UWP после получения запроса на подключение мой образец кода : -

private async void Listener_ConnectionRequestedAsync(
      WiFiDirectConnectionListener sender, 
      WiFiDirectConnectionRequestedEventArgs args)
    {
        WiFiDirectConnectionRequest request = args.GetConnectionRequest();
        WiFiDirectDevice _device = await WiFiDirectDevice.FromIdAsync(request.DeviceInformation.Id);
        var endPoints = _device.GetConnectionEndpointPairs();
        EndpointPair firstEndpoint = endPoints[0];

        // Which socket connection should i create
        // StreamSocket or StreamSocketListener
    }

 

Я пробовал хак в UWP, который, кажется, работает, но я не уверен в этом

if (firstEndpoint.LocalHostName.CanonicalName.EndsWith("1"))
{
  // creating server socket
  // StreamSocketListener and waiting for incoming connection                         
}
else
{
  //Creating client socket
  // StreamSocket and connecting with remote host                     
}

Как мне выбрать тип подключения сокета на стороне UWP? Пожалуйста, укажите фундаментальную концепцию, которую мне здесь не хватает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...