// Read out and print the message received from the socket. private async void StartReader(Windows.Networking.Proximity.ProximityStreamSocket socket, Windows.Storage.Streams.DataReader reader) { uint initialLength = 4; try { await reader.LoadAsync(initialLength); uint msgLength = (uint)reader.ReadInt32(); try { await reader.LoadAsync(msgLength); string message = reader.ReadString(msgLength); WriteMessageText("Received message: " + message + "\n"); // After receiving a message, listen for the next message. StartReader(socket, reader); } catch (Exception e) { WriteMessageText("Error: " + e.Message + "\n"); socket.Dispose(); } } catch (Exception e) { WriteMessageText("Error: " + e.Message + "\n"); socket.Dispose(); } }
// Reference socket streams for writing and reading messages. private void SendMessage(Windows.Networking.Proximity.ProximityStreamSocket socket) { // Get the network socket from the proximity connection. proximitySocket = socket; // Create DataWriter for writing messages to peers. dataWriter = new Windows.Storage.Streams.DataWriter(proximitySocket.OutputStream); // Listen for messages from peers. Windows.Storage.Streams.DataReader dataReader = new Windows.Storage.Streams.DataReader(proximitySocket.InputStream); StartReader(proximitySocket, dataReader); }
async private void ConnectToPeer(Windows.Networking.Proximity.PeerInformation peerInfo) { WriteMessageText("Peer found. Connecting to " + peerInfo.DisplayName + "\n"); try { Windows.Networking.Proximity.ProximityStreamSocket socket = await Windows.Networking.Proximity.PeerFinder.ConnectAsync(peerInfo); WriteMessageText("Connection successful. You may now send messages.\n"); SendMessage(socket); } catch (Exception err) { WriteMessageText("Connection failed: " + err + "\n"); } }