Example #1
0
        void OnResolveCompletion(PPError result)
        {
            if (result != PPError.Ok)
            {
                PostMessage("Resolve failed.");
                return;
            }

            var addr = PPBHostResolver.GetNetAddress(resolver_, 0);

            PostMessage($"Resolved: {(Var)PPBNetAddress.DescribeAsString(addr, PPBool.True)}");

            var callback = new CompletionCallback(OnConnectCompletion);

            if (IsUDP)
            {
                PostMessage("Binding ...");
                remote_host_ = new PPResource(addr);
                var ipv4_addr = new PPNetAddressIPv4(0);
                PPBUDPSocket.Bind(udp_socket_, addr, callback);
            }
            else
            {
                PostMessage("Connecting ...");
                PPBTCPSocket.Connect(tcp_socket_, addr, callback);
            }
        }
Example #2
0
        void Connect(string host, bool tcp)
        {
            if (IsConnected)
            {
                PostMessage("Already connected.");
                return;
            }

            if (tcp)
            {
                tcp_socket_ = PPBTCPSocket.Create(this);
                if (PPBTCPSocket.IsTCPSocket(tcp_socket_) == PPBool.False)
                {
                    PostMessage("Error creating TCPSocket.");
                    return;
                }
            }
            else
            {
                udp_socket_ = PPBUDPSocket.Create(this);
                if (PPBUDPSocket.IsUDPSocket(udp_socket_) == PPBool.False)
                {
                    PostMessage("Error creating UDPSocket.");
                    return;
                }
            }


            resolver_ = PPBHostResolver.Create(this);
            if (PPBHostResolver.IsHostResolver(resolver_) == PPBool.False)
            {
                PostMessage("Error creating HostResolver.");
                return;
            }

            ushort port     = 80;
            var    hostname = host;
            int    pos      = host.IndexOf(':');

            if (pos > 0)
            {
                hostname = host.Substring(0, pos);
                port     = ushort.Parse(host.Substring(pos + 1));
            }

            var hint = new PPHostResolverHint()
            {
                family = PPNetAddressFamily.Unspecified, flags = 0
            };

            PPBHostResolver.Resolve(resolver_,
                                    hostname,
                                    port,
                                    hint,
                                    new CompletionCallback(OnResolveCompletion));

            PostMessage("Resolving ...");
        }