ClientTOpen Method (ProtocolAddress, NotifyDataChangedEventHandler) |
Namespace: Demo3D.Net
public static Client<T> Open( ProtocolAddress address, NotifyDataChangedEventHandler dataChangedHandler )
using System; using System.Collections; using System.Threading.Tasks; using Demo3D.Native; using Demo3D.Net; using Demo3D.Net.Protocols; using Demo3D.Visuals; namespace Examples.Net.TcpClientDataNotifierExample { [Auto] public class Client { [Auto] IBuilder app; [Auto] PrintDelegate print; [Auto] SimplePropertyValue<string> tcpAddress; // The hostname to connect to. [Auto] SimplePropertyValue<int> tcpPort; // The port to connect to. [Auto] IEnumerable OnInitialize(Visual sender) { yield return Connect(); } async Task Connect() { // Build a TCP address from the host and port. // A TCP address will look something like "tcp://host:1234". var address = new ProtocolAddressBuilder(TCP.Scheme, tcpAddress, tcpPort).Address; // Connect to the server using the configured tcpAddress and tcpPort. // Calls ReceiveMessage for every message received. await Client<IPacketIOService>.OpenAsync(address, ReceiveMessage); } void ReceiveMessage(ProtocolSocket socket, object service, NotifyDataChangedEventArgs e) { try { var args = (PacketChangedEventArgs)e; // A TCP client uses PacketChangedEventArgs. int message; // Read from the packet. using (var packet = args.GetPacket()) { // Read the message from the client - in this case a single integer. message = packet.ReadInt32(); } // Handle the message. HandleMessage(message); } catch (Exception x) { socket.Close(x); } } void HandleMessage(int message) { print("Message received " + message); } } }