2017-08-08 41 views
0

現在、私はWindows 10のIoTコアのUWPアプリケーションでWiFiダイレクトの問題が何かを把握しようとしています。目標は、StreamSocketListenerがWiFiダイレクトから着信接続を受け入れるようにすることです。これは、最初のConnection i makeでうまく動作し、StreamSocketListenerへの2回目の要求でWiFiダイレクトセッションが破棄され、接続が切断されます。参考として、SSIDとパスフレーズで従来のWiFi-Direct実装を使用する必要があります。ここで私が前に言ったようにいくつかのサンプルコードは、それがうまく機能し、UWP WiFiダイレクト接続が2回目の着信StreamSocketListener接続後に切断される

のWiFiダイレクト出版社

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のEventHandler

WiFiDirectConnectionRequest connectionRequest = connectionEventArgs.GetConnectionRequest(); 

WiFiDirectDevice wfdDevice = null; 

try 
{ 
    wfdDevice = await WiFiDirectDevice.FromIdAsync(connectionRequest.DeviceInformation.Id); 
} 
catch 
{ 
    // 
} 

wfdDevice.ConnectionStatusChanged += OnConnectionStatusChanged; 

listEndpointPairs = wfdDevice.GetConnectionEndpointPairs(); 

StreamSocketListener

_listener = new StreamSocketListener(); 
await _listener.BindEndpointAsync(listEndpointPairs[0].LocalHostName, "80"); 
listener.ConnectionReceived += (sender, args) => ConnectionReceivedHandler(args); 

ですが、私は、送信することはできません。 StreamSocketListenerへの2回目のリクエスト、もしあれば、WiFi直接接続切断されます。私は何かを見逃したり、間違いをしましたか?アドバイス

+0

Windowsのiotコアデバイスとは何ですか? –

+0

Windows 10の最新のビルドを持つラスベリピ3 iotコア。 – andy

+0

オンボードWi-Fiまたは外部Wi-Fiアダプターを使用していますか? –

答えて

0

おかげであなたは同じポート番号(あなたが「80」を使用)を使用すると、次の例外を取得することで、複数の接続設定した場合:

Only one usage of each socket address (protocol/network address/port) is normally permitted. 

をですから、異なるポート番号を割り当てる必要がありますすべての接続要求に対して

または、指定した番号の代わりに空の文字列を使用すると、システムによって一意のポート番号が割り当てられます。 hereを参照できます。

+0

ありがとう、私はこれを知っているが、私の問題ではない。私がWiFi Direct Publisherを設定し、StreamSocketListenerを実行すると(ポート80で私の場合)、デバイスに接続できます。 SSIDを選択してパスフレーズを入力して、WiFi Direct経由のスマートフォンを開きます。 Connectionが確立され、私はStreamSocketListenerにリクエストを送信できます。しかし、私がStreamSocketListenerへの2回目のリクエストをしようとすると、WiFi Direct Connectionは自分のラズベリーのアプリケーションによって破棄されます。 – andy

+0

例外やエラーがありますか? –

+0

悲しいことに、例外やその他のエラーはありません。私は電話に接続し、要求を送信します。これは完全に完了します。それから私は別の要求を送信し、何も起こりません、私は私の "OnConnectionStatusChanged" EventHandlerを見れば、私は "WiFiDirectConnectionStatus"が切断されることがわかります。 – andy

関連する問題