Connecting to the first available peer found:
try { var agent = await Samsung.Sap.Agent.GetAgent(Samsung.Sap.Service.Profiles.First()); var peers = await agent.FindPeers(null); if (peers.Count() == 0) { Console.WriteLine("There are no peers to connect to."); } else { var peer = peers.First(); await peer.Connection.Open(); peer.Connection.Send(agent.Channels.First().Value, System.Text.Encoding.ASCII.GetBytes("Hello")); } } except (Exception exc) { Console.WriteLine("Communication failure: " + exc.Message); } Handling of an incomming connection: Samsung.Sap.Agent agent = null; agent = await Samsung.Sap.Agent.GetAgent("/my/profile", onConnect: con => { if (con.Peer.ProfileVersion == agent.ProfileVersion) { con.DataReceived += (s, e) => { Console.WriteLine($"Received {e.Data.Length} bytes from {e.Peer.DeviceName}/{e.Channel.ID}"); }; return true; // accept connection from peers with the same profile version as ours } else { return false; // reject other connections } });
Connection between Peers can be closed by calling Connection.Close() method.
connection.Close();
In this sample text message is sent using Peer.SendMessage(). In contrast to sending data using Connection.Send() method establishing connection between Peers is not required.
await peer.SendMessage(Encoding.UTF8.GetBytes("Hello Message"));
Receiving message from remote Peer is handled by OnMessage callback set before.
private async void OnMessage(Peer peer, byte[] content) { string message = Encoding.UTF8.GetString(content) + " Time: " + DateTime.Now.ToShortTimeString(); Toast.DisplayText(message); await peer.SendMessage(Encoding.UTF8.GetBytes(message)); }
In this case, app replies to a receiving command from remote Accessory Peer Agent in Smart device by providing the current time stamp.