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); } }
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 ..."); }