目前,我想知道我在Windows 10 IoT Core上的UWP应用程序中使用WiFi direct的问题是什么。目标是让StreamSocketListener接受来自WiFi direct的传入连接。这对我建立的第一个连接很有效,对StreamSocketListener的第二个请求破坏了WiFi直接会话,并断开了连接。作为补充,我必须使用传统的WiFi直接实现和SSID和密码短语。下面是一些示例代码
WiFiDirectAdvertisementPublisher _publisher = new WiFiDirectAdvertisementPublisher();
_publisher.StatusChanged += OnStatusChanged;
WiFiDirectConnectionListener _listener = new WiFiDirectConnectionListener();
try
{
_listener.ConnectionRequested += OnConnectionRequested;
}
catch
{
return;
}
_publisher.Advertisement.ListenStateDiscoverability = WiFiDirectAdvertisementListenStateDiscoverability.Normal;
_publisher.Advertisement.IsAutonomousGroupOwnerEnabled = true;
_publisher.Advertisement.LegacySettings.IsEnabled = true;
PasswordCredential creds = new PasswordCredential();
creds.Password = passphrase;
_publisher.Advertisement.LegacySettings.Passphrase = creds;
_publisher.Advertisement.LegacySettings.Ssid = ssid;
_publisher.Start();
if (_publisher.Status == WiFiDirectAdvertisementPublisherStatus.Started)
{
// OK
}
else
{
// Error
}
OnConnectionRequested事件处理程序
WiFiDirectConnectionRequest connectionRequest = connectionEventArgs.GetConnectionRequest();
WiFiDirectDevice wfdDevice = null;
try
{
wfdDevice = await WiFiDirectDevice.FromIdAsync(connectionRequest.DeviceInformation.Id);
}
catch
{
//
}
wfdDevice.ConnectionStatusChanged += OnConnectionStatusChanged;
listEndpointPairs = wfdDevice.GetConnectionEndpointPairs();
_listener = new StreamSocketListener();
await _listener.BindEndpointAsync(listEndpointPairs[0].LocalHostName, "80");
listener.ConnectionReceived += (sender, args) => ConnectionReceivedHandler(args);
正如我之前所说,它工作得很好,但我无法向StreamSocketListener发送第二个请求,如果我这样做,WiFi直接连接就会断开。我是错过了什么还是犯了错?
谢谢你的建议