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